我有兩個字典:
dd = {1: [10, 15], 5: [10, 20, 27], 3: [7]}
dd1 = {1: [1, 4], 5: [2, 5, 6], 3: [3]}
我想讓附加的字典dd看起來像這樣:
dd = {1: [[10, 15],[1, 4]], 5: [[10, 20, 27],[2, 5, 6]], 3: [[7],[3]]}
我用來獲得一些接近此的代碼是:
for dictionary in (dd, dd1):
for key, value in dictionary.items():
dd[key].append([value])
這并不完全有效,因為它將串列附加到串列中,而不是將兩個串列分開作為串列串列。
uj5u.com熱心網友回復:
假設d和d1具有相同的鍵:
d = {1: [10, 15], 5: [10, 20, 27], 3: [7]}
d1 = {1: [1, 4], 5: [2, 5, 6], 3: [3]}
dd = d
for k, v in d1.items():
dd[k] = [dd[k], v]
print(dd)
輸出:
{1: [[10, 15], [1, 4]], 5: [[10, 20, 27], [2, 5, 6]], 3: [[7], [3]]}
替代方法:
d = {1: [10, 15], 5: [10, 20, 27], 3: [7]}
d1 = {1: [1, 4], 5: [2, 5, 6], 3: [3]}
dd = {}
for key in d.keys():
dd[key] = [d[key], d1[key]]
print(dd)
輸出:
{1: [[10, 15], [1, 4]], 5: [[10, 20, 27], [2, 5, 6]], 3: [[7], [3]]}
uj5u.com熱心網友回復:
下面的代碼片段將確保即使您在兩個字典中都沒有鍵,它的值仍將被保留并且您不會有例外:
def merge_two_dicts(dict_a, dict_b):
merged = dict()
for key, value in dict_a.items():
if key in dict_b:
merged[key] = [value,dict_b[key]]
dict_b.pop(key, None)
else:
merged[key] = [value]
for key, value in dict_b.items():
merged[key] = [value]
return merged
uj5u.com熱心網友回復:
如果兩個字典具有相同的鍵但順序不同
嘗試使用這個:
dd = {1: [10, 15], 3: [7], 5: [10, 20, 27]}
d1 = {1: [1, 4], 5: [2, 5, 6], 3: [3]}
ddd = {}
for k in sorted(dd):
ddd[k] = [dd[k], d1[k]]
uj5u.com熱心網友回復:
使用一種更類似于 OP 使用的方法。它適用于任何字典,對所需的鍵沒有限制。
Used defaultdict,一個“更高”性能的子類dict.
from collections import defaultdict
d1 = {1: [10, 15], 5: [10, 20, 27], 3: [7]}
d2 = {1: [1, 4], 5: [2, 5, 6], 3: [3]}
dd = defaultdict(list)
for d in d1, d2:
for k, v in d.items():
dd[k].append(v)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495545.html
