Python:创建列表列表作为字典值

时间:2018-08-31 15:18:55

标签: python python-3.x list dictionary

我有两个列表,希望通过索引将它们关联为字典中的键值对。密钥列表具有多个相同的元素。我希望将值列表中的所有元素配对为一个列表列表。我正在使用list.append()方法,但这没有给我想要的输出。关于代码的任何建议,还是我应该以其他方式看待问题?

def func1(x):
returnMe = {}
    for (a,b) in enumerate (x):
         if a%2 == 0:
              returnMe += b.upper()
         else:
              returnMe += b.lower()
return returnMe


func1('Testing Testing')

>>>'T'

当前输出:

list1 = ['a', 'b', 'b', 'b', 'c']
list2 = [['1', '2', '3'], ['4', '5', '6'], [ '7', '8', '9'], ['10', '11', '12'], ['13', '14', '15']]

combo = {}
for i in range(len(list1)):
    if list1[i] in combo:
        combo[list1[i]].append(list2[i])
    else:
        combo[list1[i]] = list2[i]

所需的输出:

{'a': ['1', '2', '3'], 'b': ['4', '5', '6', [ '7', '8', '9'], ['10', '11', '12']], 'c': ['13', '14', 15']}

3 个答案:

答案 0 :(得分:4)

使用defaultdict,空列表为起始值

 result = defaultdict(list)

 for key, value in zip(list1, list2):
      result[key].append(value)

答案 1 :(得分:0)

尝试此代码。当我尝试使用您提供的相同输入时,它就起作用了。

#Input
list1= ['a','b', 'b','b', 'c']
list2 = [['1', '2', '3'], ['4', '5', '6'], [ '7', '8', '9'], ['10','11','12'], ['13', '14', '15']]

combo= {}
for index, value in enumerate(list1):
    if value in combo.keys():
        combo[value].append(list2[i])
    else:
        combo[value]= []
        combo.append(list2[i])
#output
print(combo)
{'a': [['1', '2', '3']],'b': [['4', '5', '6'], ['7', '8', '9'], ['10', '11', '12']], 'c': [['13', '14', '15']]}

答案 2 :(得分:0)

如果您希望获得更Python化的响应,还可以使用dict强制:

output = {key: [value] for key, value in zip(list1, list2)}