根据单独的列表更新字典列表中特定键的值

时间:2017-02-16 00:18:35

标签: python list dictionary

我有一个具有相同键的字典列表。某些键具有整数值,少数具有字符串值,并且一个键具有第一个字典的设置值,而 None 用于所有其余字典。

可在此处找到词典列表中第一个字典的示例:

dicts = [{'foul': 1, 'lineup': set(['Player 1', 'Player 2']), 'Date': '11/12/2016}...

词典列表中第二和第三个词典的示例:

...{'foul': 6, 'lineup': None, 'Date': '11/19/2016}, {'foul': 12, 'lineup': None, 'Date': '11/22/2016}]

以下是我想用来更新这三个词典的值的示例列表:

listofvals = [set('Player 4', 'Player 2'), set('Player 2', 'Player 3'), set('Player 6', 'Player 1')]

请注意,无论第一个字典中的值是什么,我都希望按照上面列表的顺序更新dicts列表中的所有字典。

返回的词典列表如下:

desired_product = 
[{'foul': 1, 'lineup': set(['Player 4', 'Player 2']), 'Day': '11/12/2016},
{'foul': 6, 'lineup': set(['Player 2', 'Player 3']), 'Day': '11/19/2016}, 
{'foul': 12, 'lineup': set(['Player 6', 'Player 1']), 'Day': '11/22/2016}]

我尝试过以下各种变体:

for index, d in enumerate(dicts):
    stnt.update((k, listofvals[idx]) for k, v in stnt.iteritems() if v == None or type(v) == 'set')

我尝试过的另一件事:

for index, d in enumerate(dicts):
    for key, val in d.interitems():
        setattr(d["lineup"], key, listofvals[idx])

1 个答案:

答案 0 :(得分:1)

for index,d in enumerate(dicts):
    d["lineup"] = listofvals[index]