我有一個帶有值串列的字典串列
[{'name': ['TO_MATCH_1', 'TO_MATCH_2'], 'amount': ['2', '1']},
{'name': ['TO_MATCH_3', 'TO_MATCH_2'], 'amount': ['3', '4']}]
如果下面的值串列與name第二個字典的值匹配:
{'ONE': 'TO_MATCH_1',
'TWO': 'TO_MATCH_2',
'THREE': 'TO_MATCH_3',
'FOUR': 'TO_MATCH_4'}
該串列將替換為第二個的鍵。
預期輸出:
[{'name': ['ONE', 'TWO'], 'amount': ['2', '1']},
{'name': ['THREE', 'TWO'], 'amount': ['3', '4']}]
uj5u.com熱心網友回復:
# DATA
d1 = [{'name': ['TO_MATCH_1', 'TO_MATCH_2'], 'amount': ['2', '1']},
{'name': ['TO_MATCH_3', 'TO_MATCH_2'], 'amount': ['3', '4']}]
d2 = {'ONE': 'TO_MATCH_1',
'TWO': 'TO_MATCH_2',
'THREE': 'TO_MATCH_3',
'FOUR': 'TO_MATCH_4'}
d3 = {v: k for k, v, in d2.items()}
[{k: [d3.get(x, x) for x in v] for k, v in el.items()} for el in d1]
# [{'name': ['ONE', 'TWO'], 'amount': ['2', '1']},
# {'name': ['THREE', 'TWO'], 'amount': ['3', '4']}]
uj5u.com熱心網友回復:
您可以反轉映射字典并在回圈中使用它來替換值:
r_map = {v:k for k,v in mapping.items()}
for d in lst:
for i, name in enumerate(d['name']):
d['name'][i] = r_map.get(name, name)
print(lst)
輸出:
[{'name': ['ONE', 'TWO'], 'amount': ['2', '1']},
{'name': ['THREE', 'TWO'], 'amount': ['3', '4']}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/441351.html
上一篇:在字典的幫助下訪問Json物件值
下一篇:在減少嵌套字典的同時保持字典結構
