当前位置: 代码迷 >> python >> 如何从这个元组列表中提取并转换成这个字典?
  详细解决方案

如何从这个元组列表中提取并转换成这个字典?

热度:96   发布时间:2023-06-19 09:20:57.0

我有这个元组列表。

List = [('id1', 'name1', 'date1'), ('id1', 'name2', 'date2'), ('id2', 'name3', 'date3'), ('id2', 'name4', 'date4')]

我想要一个将list转换为字典的函数

Dict = convert('id1', List)

Dict的内容是{'id1':('name1', 'name2')}

第一个参数根据第一个元素过滤出感兴趣的元组。 它也是输出字典的关键。 每个元组的第二个元素将成为输出字典的值。

我在Python中编写了一个小函数,它不起作用。 如果你有更好的建议,非常感谢你的帮助。 忘了我的功能,如果它太远,我想是的。 以pythonic方式解决它是非常受欢迎的。 我使用的是Python 2.7

def convertToDict(key, List):
    for key in List[0]:
        DictOut = {key:[]}
        DictOut[key].append(List[0])

您无条件地替换DictOut 相反,你应该像这样使用setdefault

DictOut.setdefault(key, [])

你的程序可以这样写

def convertToDict(my_list):
    result_dict = {}
    for item in my_list:
        result_dict.setdefault(item[0], []).append(item[1])
    return result_dict

print convertToDict(my_list)
# {'id2': ['name3', 'name4'], 'id1': ['name1', 'name2']}

如果您只想获取特定键。 你可以用它

def convertToDict(key, my_list):
    result_dict = {}
    for item in my_list:
        if item[0] == key:
            result_dict.setdefault(item[0], []).append(item[1])
    return result_dict

print convertToDict("id1", my_list)
# {'id1': ['name1', 'name2']}

实际上,您可以将用于此目的

from collections import defaultdict
def convertToDict(key, my_list):
    result_dict = defaultdict(list)
    for item in my_list:
        if item[0] == key:
            result_dict[item[0]].append(item[1])
    return result_dict

print convertToDict("id1", my_list)
  相关解决方案