将Dict附加到Dict

时间:2012-08-07 07:34:50

标签: python list dictionary

我目前有一个字典,如下所示:

{'BOB':  [['AUDI', 'BLACK', 'PETROL'],
          ['MINI', 'PINK', 'PETROL'],
          ['VW', 'BLUE', 'DIESEL']],
 'DAVE': [['BMW', 'PURPLE', 'PETROL'],
          ['VOLVO', 'GREY', 'PETROL']]}

我正在寻找的是为每个键列表添加一个字典。该词典将是这样的:

{'TYRE': RUBBER, 'ALLOY': 17, 'SUNROOF': YES} 

最终结果如下:

{'BOB':  [['AUDI', 'BLACK', 'PETROL',
           {'TYRE': RUBBER, 'ALLOY': 17, 'SUNROOF': YES}],
          ['MINI', 'PINK', 'PETROL',
           {'TYRE': RUBBER, 'ALLOY': 17, 'SUNROOF': YES}]
# ...

谢谢,

2 个答案:

答案 0 :(得分:2)

您要将附加的字典添加到值中的每个列表中,这些列表本身就是列表。这些是可变的,所以直接引用这些内部列表:

for valuelist in yourdict.values():
    for sublist in valuelist:
        sublist.append(yourotherdict.copy())

注意在那里使用.copy();我们正在创建yourotherdict结构的新副本以便每次追加,否则它们都将是相同的dict ,并且操纵一个将操纵每个列表中的所有引用。

答案 1 :(得分:1)

dic={'BOB':  [['AUDI', 'BLACK', 'PETROL'],
          ['MINI', 'PINK', 'PETROL'],
          ['VW', 'BLUE', 'DIESEL']],
 'DAVE': [['BMW', 'PURPLE', 'PETROL'],
          ['VOLVO', 'GREY', 'PETROL']]}
dic1={'TYRE': 'RUBBER', 'ALLOY': 17, 'SUNROOF': 'YES'}
for x in dic:
    for y in dic[x]:
        y.append(dic1)
print dic    

<强>输出:

{'BOB': [['AUDI', 'BLACK', 'PETROL', {'ALLOY': 17, 'SUNROOF': 'YES', 'TYRE': 'RUBBER'}], ['MINI', 'PINK', 'PETROL', {'ALLOY': 17, 'SUNROOF': 'YES', 'TYRE': 'RUBBER'}], ['VW', 'BLUE', 'DIESEL', {'ALLOY': 17, 'SUNROOF': 'YES', 'TYRE': 'RUBBER'}]], 'DAVE': [['BMW', 'PURPLE', 'PETROL', {'ALLOY': 17, 'SUNROOF': 'YES', 'TYRE': 'RUBBER'}], ['VOLVO', 'GREY', 'PETROL', {'ALLOY': 17, 'SUNROOF': 'YES', 'TYRE': 'RUBBER'}]]}