Skip to main content
 首页 » 编程设计

python之从另一个字典的键和值数组创建字典的优雅方法是什么

2025年05月04日14mengfanrong

如何使用另一个字典的键和值数组创建另一个字典?

我考虑过这样做:

zipped = zip(theExistingDict.keys(), arrayOfValues) 
myNewDict = dict(zipped) 

但是,这并不完全有效,arrayOfValues 中的每个值都与结果字典中的任意键配对。我无法控制 arrayOfValues 中的哪个元素与 theExistingDict.keys() 中的哪个键配对。

theExistingDict 看起来像这样:

{u'实际比特率':4,u'建议比特率':3,u'title':2,u'id':1,u'游戏插槽':0}

arrayOfValues 看起来像这样:

1.0, u'GOLD_Spider Solitaire', u'Spider\\nSolitaire', 120000.0, 120000.0

所以:我希望 arrayOfValues[0] 映射到 game slot(因为在字典中它的值为 0)。

有没有一种简单而优雅的方法来做到这一点?

请您参考如下方法:

由于您现有的字典本身包含有关列表中元素位置的信息:您可以:

>>> exist = {u'title': 2, u'actual bitrate': 4, u'id': 1, u'game slot': 0, u'Suggested Bitrate': 3} 
>>> l = [1.0, u'GOLD_Spider Solitaire', u'Spider\\nSolitaire', 120000.0, 120000.0] 
>>> dict((k, l[v]) for k, v in exist.iteritems()) 
{u'Suggested Bitrate': 120000.0, u'game slot': 1.0, u'actual bitrate': 120000.0, u'id': u'GOLD_Spider Solitaire', u'title': u'Spider\\nSolitaire'} 

或者在 py3k/python 2.7+ 中:

>>> {k: l[v] for k, v in exist.items()} 
{'Suggested Bitrate': 120000.0, 'game slot': 1.0, 'actual bitrate': 120000.0, 'id': 'GOLD_Spider Solitaire', 'title': 'Spider\\nSolitaire'}