我有兩個 python 字典,比如說,
d1 = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
d2 = {'v1':'w1','v2':'w2','v5':'w5'}
我需要的是這樣的合并字典-
mergeDict= {k1:(v1,w1), k2:(v2,w2), k3:(v3)}
我能夠查找或閱讀的任何內容都處理了附加字典,沒有像這樣的。我稱之為鏈接,因為第一個字典的值可能是第二個字典的關鍵。
到目前為止,我已經通過典型的回圈和對鍵()的查找來完成此操作。想知道是否有一種更 Pythonic 的方式來實作這一點,我可能會在這里遺漏?
uj5u.com熱心網友回復:
聽寫理解似乎有效:
out = {k: (v, d2[v]) if v in d2 else (v,) for k,v in d1.items()}
輸出:
{'k1': ('v1', 'w1'), 'k2': ('v2', 'w2'), 'k3': ('v3',)}
uj5u.com熱心網友回復:
您可以在 Python 3.9 中使用集合和字典更新
>>> {k:(d1[k],) for k in d1} | {k:(d1[k],d2[k]) for k in set(d1) & set(d2)}
{'k1': ('v1', 'w1'), 'k2': ('v2', 'w2'), 'k3': ('v3',)}
uj5u.com熱心網友回復:
如果您打算將具有相同鍵的值合并到一個集合中,您可以
- 創建一個新的字典
- 用于
itertools迭代任意數量的字典 - 您可以打包的一些默認值(例如串列或集合)
import itertools
d3 = {}
for key, value in itertools.chain(d1.items(), d2.items()):
d3.get(key)
try:
d3[key].append(value) # add value to list
except KeyError: # first instance of key
d3[key] = [value] # start a fresh list
請注意,這不符合所寫的問題,即嘗試在另一個字典中打包匹配相同值的鍵,但在它們之間共享鍵
>>> d1 = {"k1":"v1","k2":"v2","k3":"v3"}
>>> d2 = {"v1":"w1","v2":"w2","v5":"w5"}
[..]
>>> d3
{'k1': ['v1'], 'k2': ['v2'], 'k3': ['v3'], 'v1': ['w1'], 'v2': ['w2'], 'v5': ['w5']}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410045.html
標籤:
上一篇:如何制作小塊python字典
