设置
我有一个包含元组的列表,每个元组都包含一个元组。
列表的一部分,
l = [ ('E', ('1058GK', '1058GK')),
('K', ('1058GL', '1058GN')),
('E', ('1058GP', '1058HC')),
('K', ('1058HD', '1058LT'))]
问题
我想将 l
转换为字典,这样,
d = {'E': ['1058GK','1058GK','1058GP','1058HC'],
'K': ['1058GL','1058GN','1058HD','1058LT']}
我该怎么办?
尝试过
d = {k:v for k,v in l}
让我接近,但这会创建,
d = {'E': ('1058GP','1058HC'),
'K': ('1058HD','1058LT')}
最佳答案
你可以使用setdefault
:
d = {}
for key, lst in l:
d.setdefault(key, []).extend(lst)
# results in
# d = {'E': ['1058GK', '1058GK', '1058GP', '1058HC'],
# 'K': ['1058GL', '1058GN', '1058HD', '1058LT']}
如果key
不在字典中,则会添加它,其中包含一个空列表。然后用相应元组中的元素扩展列表。
或者你可以使用 defaultdict
:
from collections import defaultdict
d = defaultdict(list)
for key, lst in l:
d[key].extend(lst)
关于python - 将包含元组的元组转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43977504/