字典中的元组列表

2024-05-15 22:43:55 发布

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

我在理解python如何将元组列表转换为字典时遇到了一些问题。比如说,

from itertools import combinations as comb
a=[1,2,3,4]
l_t=list(comb(a,2))
print(l_t)
d_t=dict(l_t)
print(d_t)

输出为:

[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
{1: 4, 2: 4, 3: 4}

我只是想知道如果我们有几个相等的键,在转换过程中会发生什么。 我不明白为什么键“1”只有一个值,键“2”只有一个值,依此类推? 对不起,可能是个愚蠢的问题,但我已经找到答案了 先谢谢你


Tags: 答案fromimport列表字典过程asdict
2条回答

在字典中,键是唯一的,因此不能有多个键使用相同的“名称”。 您可以使用setDefault并使用空列表收集所有值:

d = {}
l = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
for key, value in l:
    d.setdefault(key, [])
    d[key].append(value)

print(d)

输出:

{1: [2, 3, 4], 2: [3, 4], 3: [4]}

我们可以看到,生成的dict包含每个元组的最后元素[0]

[(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]

{1:4,2:4,3:4}

这意味着代码

dict(list_of_tuples)

工作原理如下:

d = {}
lst = [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
for x in lst:
  d[x[0]] = x[1]

相关问题 更多 >