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

2024-09-29 23:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个元组列表。你知道吗

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

我想有一个函数,将列表转换成字典,这样

Dict = convert('id1', List)

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

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

我用Python编写了一个小函数,但它不起作用。如果你有更好的建议,非常感谢你的帮助。忘了我的功能,如果它是太远了,我认为这样。用Python的方式解决它是最受欢迎的。我使用的是python2.7

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

Tags: key函数元素列表字典dictlist元组
1条回答
网友
1楼 · 发布于 2024-09-29 23:24:09

您正在无条件地替换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)

相关问题 更多 >

    热门问题