![](/img/trans.png)
[英]How to replace a value for a key in dictionaries of a list based on another dictionary?
[英]How to Change a Dictionaries Key Based on the Value Designated to the Same Key in Another Dictionary?
我正在嘗試使用另一個字典中的鍵值對更新字典鍵。 我要合並的兩個字典都嵌套在列表中:
dictionary1 = [{ '32639': {'78549': {'526' : { 'sum': 8930.40, 'min' : 2380, 'max': 74839}}}} , {'89304': {'20384': {'152' : { 'sum': 51235.20, 'min' : 4512, 'max': 362.69}}}}, { '41526': {'45315': {'364' : { 'sum': 8985.65, 'min' : 3632.32, 'max': 4558.15}}}}]
dictionary2 = [{'32639':'90283'}, {'49034': '89203'}, {'28942': '39024'}, {'41526':'24903'} ]
我希望生成的字典看起來完全像dictionary1,但是如果dictionary1中字典的關鍵字在dictionary2中字典的關鍵字中,則應該對其進行更改。
結果字典:
new_dictionary = [{ '90283': {'78549': {'526' : { 'sum': 8930.40, 'min' : 2380, 'max': 74839}}}} , {'89304': {'20384': {'152' : { 'sum': 51235.20, 'min' : 4512, 'max': 362.69}}}}, { '24903': {'45315': {'364' : { 'sum': 8985.65, 'min' : 3632.32, 'max': 4558.15}}}}]
我嘗試過:
list1 = []
for d1, d2 in zip(dictionary1, dictionary2):
for key, value in d1.iteritems():
new_dict = {}
if key in d2:
new_dict[d2[key]] = value
list1.append(new_dict)
else:
new_dict[key] = value
list1.append(new_dict)
但是,它不起作用,但是在此示例數據上卻起作用,但是該程序僅基於dictionary2的長度來循環訪問dictionary1。 因此,我嘗試使用包含841個詞典(詞典1)的列表和53個詞典(詞典2)的列表來運行此列表,並且它只會在退出之前轉換詞典1中的前53個鍵。
嘗試這樣的事情:
ds1 = [{ '32639': {'78549': {'526' : { 'sum': 8930.40, 'min' : 2380, 'max': 74839}}}} , {'89304': {'20384': {'152' : { 'sum': 51235.20, 'min' : 4512, 'max': 362.69}}}}, { '41526': {'45315': {'364' : { 'sum': 8985.65, 'min' : 3632.32, 'max': 4558.15}}}}]
ds2 = [{'32639':'90283'}, {'49034': '89203'}, {'28942': '39024'}, {'41526':'24903'} ]
def trans(ds1, ds2):
for d1 in ds1:
for d2 in ds2:
ckeys = d1.keys() & d2.keys()
ukeys = d1.keys() - d2.keys()
for ck in ckeys:
yield (d2[ck], d1[ck])
for uk in ukeys:
yield (uk, d1[uk])
print(dict(trans(ds1, ds2)))
我得到了輸出:
{'90283': {'78549': {'526': {'sum': 8930.4, 'min': 2380, 'max': 74839}}}, '32639': {'78549': {'526': {'sum': 8930.4, 'min': 2380, 'max': 74839}}}, '89304': {'20384': {'152': {'sum': 51235.2, 'min': 4512, 'max': 362.69}}}, '41526': {'45315': {'364': {'sum': 8985.65, 'min': 3632.32, 'max': 4558.15}}}, '24903': {'45315': {'364': {'sum': 8985.65, 'min': 3632.32, 'max': 4558.15}}}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.