![](/img/trans.png)
[英]How to iterate and append key value pairs from a dictionary within a dicionary and storing values with same key into a list python
[英]append key values to dictionary from list
我正在尝试从并行列表创建字典,我被卡住了,因为使用 zip 和 setdefault 方法不允许超过 2 个参数。 任何人都可以提供帮助
mainList=["A","B"]
mainListValue1=[1,22,3]
mainListValue2=["v1","v2"]
mainListValue3=["v4","v5"]
final_dict = {}
for mainList, mainListValue1, mainListValue2 in zip(mainList, mainListValue1, mainListValue2):
final_dict.setdefault(mainList, list()).append(mainListValue1)
print(final_dict)
寻找以下输出
{'A':
1,
'v1',
'v4'
'B':
22,
'v2',
'v5'
}
首先,请注意您想要的输出在语法上是不正确的,因为字典的值没有连贯地定义,即您需要将这些值打包成一个列表之类的东西。 否则,Python 解释器会错误地认为,例如, 'v1'
元素不是'A'
的值,而是新键值的开始。
考虑到这一点,这里有一个简单的方法来循环遍历列表以将元素分组为字典的值。
result = {}
for i, key in enumerate(mainList):
value = []
for lst in [mainListValue1, mainListValue2, mainListValue3]:
value.append(lst[i])
result[key] = value
print(result)
结果是以下输出:
{'A': [1, 'v1', 'v4'], 'B': [22, 'v2', 'v5']}
我很乐意回答您可能有的任何其他问题。
如果列表像这样并行,则不需要setdefault()
,只需将zip()
与字典理解结合使用,如下所示:
#!/usr/bin/env python3
# https://stackoverflow.com/questions/60085285/append-key-values-to-dictionary-from-list
mainList = ["A","B"]
mainListValue1 = [1, 22, 3]
mainListValue2 = ["v1", "v2"]
mainListValue3 = ["v4", "v5"]
final_dict = {key: tuple(values) for key, *values
in zip(mainList, mainListValue1, mainListValue2, mainListValue3)}
print(final_dict) # -> {'A': (1, 'v1', 'v4'), 'B': (22, 'v2', 'v5')}
请注意, mainListValue1
中的3
被忽略,因为列表实际上不是并行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.