当前位置: 代码迷 >> python >> 切换字典键
  详细解决方案

切换字典键

热度:99   发布时间:2023-06-13 14:17:02.0

我有2个词典,它们都包含相同的键(或者它们会有一点切割, [3:] )但是值不同。 我想用一个字典中的键替换另一个字典中的键。 例如,这是我的一部分列表:

Dict 1

 "AED":"United Arab Emirates Dirham",
 "AFN":"Afghan Afghani",
 "ALL":"Albanian Lek",
 "AMD":"Armenian Dram",
 "ANG":"Netherlands Antillean Guilder",
 "AOA":"Angolan Kwanza",
 "ARS":"Argentine Peso"

Dict2

 "USDAED":3.672301,
 "USDAFN":66.800003,
 "USDALL":127.000221,
 "USDAMD":486.160004,
 "USDANG":1.769942,
 "USDAOA":165.080994,
 "USDARS":15.609965

我想要一个第一个条目为“阿拉伯联合酋长国迪拉姆”的列表:3.672301有什么想法吗? 请告诉我。 谢谢!

用单行(dict理解)做到这一点

dict1={"AED":"United Arab Emirates Dirham",
 "AFN":"Afghan Afghani",
 "ALL":"Albanian Lek",
 "AMD":"Armenian Dram",
 "ANG":"Netherlands Antillean Guilder",
 "AOA":"Angolan Kwanza",
 "ARS":"Argentine Peso"}

dict2 = {"USDAED":3.672301,
 "USDAFN":66.800003,
 "USDALL":127.000221,
 "USDAMD":486.160004,
 "USDANG":1.769942,
 "USDAOA":165.080994,
 "USDARS":15.609965}

dict3 = {dict1[x[3:]]:y for x,y in dict2.items()}

print(dict3)

收益率:

{'Albanian Lek': 127.000221, 'Netherlands Antillean Guilder': 1.769942,
 'Armenian Dram': 486.160004, 'United Arab Emirates Dirham': 3.672301, 
'Afghan Afghani': 66.800003, 'Argentine Peso': 15.609965,
'Angolan Kwanza': 165.080994}

代码使用键重新创建第三个字典:第一个字典的值(您提到的小键截止值,以及值:第二个值的值)

注意:由于没有订购,因此您的“第一个条目”愿望不会成立,除非您打印当然排序的项目。

dict2 = {dict1[key[3:]], value for key, value in dict2.items()

要更改/更新第一个字典,请使用函数:

# d1 and d2 are the first and the second dicts respectively
d1.update({k[3:]:v for k,v in d2.items()})
print(d1)

输出:

{'AFN': 66.800003, 'AOA': 165.080994, 'AED': 3.672301, 'ALL': 127.000221, 'ARS': 15.609965, 'AMD': 486.160004, 'ANG': 1.769942}
  相关解决方案