python - 将包含元组的元组转换为字典

标签 python dictionary tuples

设置

我有一个包含元组的列表,每个元组都包含一个元组。

列表的一部分,

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/

相关文章:

python - WSGI:start_response 函数的目的是什么

google-app-engine - 无法将 []datastore.PropertyList 传递给 GetMulti 函数(数据存储 : src has invalid type)

F# 参数传递

python - 为字典中的一个键附加多个值

C++11 可变模板 : default index array value

python - 在 python 中解析 pip list/pip freeze 的输出

python - 遍历python中的对象属性

python - 使用 Selenium 获取元素的位置

python - 沿任意轴切片

python - 修改Python字典中的列表元素