4 回答

TA貢獻1946條經(jīng)驗 獲得超4個贊
以下應該有效:
d = dict() for item in list_dict: d.setdefault(item[0], {}).update(item[1])
來自Python 3 文檔:
設置默認(鍵[,默認])
如果鍵在字典中,則返回其值。如果不是,則插入值為默認值的鍵并返回默認值。默認默認為無。

TA貢獻1847條經(jīng)驗 獲得超11個贊
你可以使用collections.defaultdict:
from collections import defaultdict
list_dict = [['key1', {'subkey1': 0}],
['key1', {'subkey2': 2}],
['key1', {'subkey5': 5}],
['key2', {'subkey2': 4}],
['key2', {'subkey1': 8}],
['key1', {'sybkey5': 10}]]
d = defaultdict(dict)
for k, v in list_dict:
d[k].update(v)
d
輸出:
defaultdict(dict,
{'key1': {'subkey1': 0, 'subkey2': 2, 'subkey5': 5, 'sybkey5': 10},
'key2': {'subkey2': 4, 'subkey1': 8}})
或者你可以使用dict.setdefault慢一點的:
d = {}
for k, v in list_dict:
d.setdefault(k, {}).update(v)
輸出:
{'key1': {'subkey1': 0, 'subkey2': 2, 'subkey5': 5, 'sybkey5': 10},
'key2': {'subkey2': 4, 'subkey1': 8}}

TA貢獻1806條經(jīng)驗 獲得超5個贊
這有效:
>>> from collections import defaultdict
>>> result = defaultdict(dict)
>>> for item in list_dict :
... result[item[0]].update(item[1])
...
>>> result
defaultdict(<type 'dict'>, {'key2': {'subkey2': 4, 'subkey1': 8}, 'key1': {'subkey5': 5, 'subkey2': 2, 'sybkey5': 10, 'subkey1': 0}})
>>>

TA貢獻1841條經(jīng)驗 獲得超3個贊
常規(guī)方法
new_dict = {}
for i in list_dict:
if i[0] in new_dict.keys():
new_dict[i[0]].update(i[1])
else:
new_dict[i[0]]=i[1]
添加回答
舉報