2017-02-16 5 views
0

私は同じキーを持つ辞書のリストを持っています。いくつかのキーは整数値を持ち、いくつかは文字列値を持ち、1つのキーは最初の辞書の設定値を持ち、なし残りのすべての辞書です。辞書のリストの最初の辞書の別のリストに基づいて辞書のリストの特定のキーから値を更新する

例がここに発見された:辞書のリストにおける第二および第三辞書の

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}] 

をここで例示リストでありますこれらの3つの辞書を更新するために使用したい値の数:

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

最初の辞書に値が何であっても、上記のリストの順序で辞書のリスト内のすべての辞書を更新したいと考えています。次のように

辞書のリストを返すようです:

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
for index,d in enumerate(dicts): 
    d["lineup"] = listofvals[index] 
+0

最初にエラーが発生します:TypeError : 'set'オブジェクトはインデックス処理をサポートしていません – BSHuniversity

+0

2番目のオブジェクトはvalのリストから1人のプレイヤーのみを返します。 – BSHuniversity

+0

これ以上の提案はありませんか? – BSHuniversity

関連する問題