Python 从列表中将键值追加到字典

Python 从列表中将键值追加到字典,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我正试图从一个并行列表创建一个字典,我被卡住了,因为使用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

我正试图从一个并行列表创建一个字典,我被卡住了,因为使用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={}
对于i,输入enumerate(主列表):
值=[]
对于[mainListValue1、mainListValue2、mainListValue3]中的lst:
value.append(lst[i])
结果[键]=值
打印(结果)
结果是以下输出:

{'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
会被忽略,因为列表实际上并不平行。

谢谢,尝试您的示例获取错误类型错误:“int”对象不是subscriptable@ziezie这很奇怪,因为我无法重现那个错误。您是否已按照原始帖子中的规定定义了
mainList=[“A”,“B”]
mainListValue1=[1,22,3]
mainListValue2=[“v1”,“v2”]
,以及
mainListValue3=[“v4”,“v5”]
?很高兴这样做,@ziezie