按键将列表转换为字典

2024-06-02 04:25:01 发布

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

我有这样的清单myList = [[5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10, 1]] 我想把它转换成类似dict的{1:[5,6,7,8,9,10]}键是内部列表的第二个参数

我尝试了下面的代码,但它不工作

for i in range(len(myList))      
    myDic[myList[i][1]] = [myList[i][1]]
    myDic[myList[i][1]].append(myList[i][0])

3条回答

使用defaultdict:

from collections import defaultdict

myDic = defaultdict(list) # values default to empty list

for a, b in myList:
    myDic[b].append(a)

myDic = dict(myDic) # get rid of default value

声明d为字典。然后使用第二个值作为2D列表中的键将第一个值附加到字典中

myList = [[5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10, 1]]
d = {}
for elem in myList:
    try:
        d[elem[1]].append(elem[0])
    except KeyError:
        d[elem[1]] = [elem[0]]
print(d)

这可以通过^{}轻松完成:

from collections import defaultdict

ret = defaultdict(list)
myList = [[5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10, 1]]
for value, key in myList:
    ret[key].append(value)
print(ret)  # defaultdict(<class 'list'>, {1: [5, 6, 7, 8, 9, 10]})

如果要避免defaultdict^{}有助于:

ret = {}
myList = [[5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10, 1]]
for value, key in myList:
    ret.setdefault(key, []).append(value)
print(ret)

注意defaultdict在标准库中;因此,如果您使用相当现代的python解释器(使用Python3,您无论如何都很好),那么您可以使用defaultdict

相关问题 更多 >