Python 从列表中创建有序的dict?

Python 从列表中创建有序的dict?,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,: 在哪里 L是一个有序字典列表(即collections.OrderedDict的对象),其中字典具有相同的键集 d是另一个有序字典,它与以前的有序字典具有相同的键集 对于每个键,d[key]是一个可以应用于L[i][key]的函数,即d[key](L[i][key]) 所有给定的字典都是按顺序排列的dicts,它们的键顺序相同 但是代码将创建一个无序的字典。如何以与给定的有序字典相同的键顺序创建有序dict collections.OrderedDict只不过是一个dict,它记住元素包

:

在哪里

  • L
    是一个有序字典列表(即collections.OrderedDict的对象),其中字典具有相同的键集

  • d
    是另一个有序字典,它与以前的有序字典具有相同的键集

  • 对于每个
    d[key]
    是一个可以应用于
    L[i][key]
    的函数,即
    d[key](L[i][key])

所有给定的字典都是按顺序排列的dicts,它们的键顺序相同


但是代码将创建一个无序的字典。如何以与给定的有序字典相同的键顺序创建有序dict

collections.OrderedDict
只不过是一个dict,它记住元素包含在其中的顺序。所以你可以用它的构造函数创建一个

[OrderedDict((k, d[k](v)) for (k, v) in l.iteritems()) for l in L]

与C++字典不同,

Python字典是无序的,因为它使用哈希键。另一种选择是使用python字典的有序专门化,称为

这将使你的声明变成

from collections import OrderedDict
L = [OrderedDict((k, d[k](v)) for (k, v) in l.iteritems()) for l in L]

为什么口述没有定做
从集合导入OrderedDict dict1=OrderedDict({x:x**5代表x英寸(1,5,10)})。\uuuu class\uuuuuuuuuOrd\uDict=OrderedDict({x:x**5代表x英寸(1,5,10)})打印(ord#dict([(1,1)、(10,100000)、(5,3125)])
@RohitDhankar您已经创建了一本词典。数据在内存中已经无序
OrderedDict
与此处的意外订单无关。
from collections import OrderedDict
L = [OrderedDict((k, d[k](v)) for (k, v) in l.iteritems()) for l in L]