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

2024-06-16 09:53:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想过这样做:

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

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

theExistingDict如下所示:

{cd5}

arrayOfValues如下所示:

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

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

有没有一种简单而优雅的方法?在


Tags: 元素字典数组keyszipdictspidergold
3条回答

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

>>> 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/python2.7+中:

^{pr2}$

根据上面的注释,theExistingDict的字典可能不是您要查找的结构。在

您可能对ordered dictionary感兴趣。在

另请参见"What’s the way to keep the dictionary parameter order in Python?"的答案

正如其他人所提到的,字典中没有定义任何顺序。python文档说,“键和值以任意顺序列出,这种顺序是非随机的,在python实现中各不相同,并且取决于字典的插入和删除历史。”

如果您希望使用将项添加到字典中的原始顺序,则可以尝试寻找保留此顺序的dictionary的替代实现,例如http://www.voidspace.org.uk/python/odict.html

相关问题 更多 >