检索 Python 中的单个字典元素

Retrieving single dictionary element in Python

我只想检索字典中的第四项"e"(下)。

我尝试使用 OrderedDict() 方法,但没有用。这是我的结果:

from collections import OrderedDict

e = OrderedDict()
e = {'a': 'A',
     'b': 'B',
     'c': 'C',
     'd': 'D',
     'e': 'E'
    }

for k, v in e.items():
    print k, v

print e.items()[3]

最后一行返回:('e','E')

所以我将键和值转换为列表,但打印时列表的显示方式如下:

['a', 'c', 'b', 'e', 'd']


['A', 'C', 'B', 'E', 'D']

对我来说,这解释了它发生的原因,但没有解释它是如何发生的。

所以,接下来我对它们进行了排序。这给了我想要的结果——但它似乎不必要地复杂:

e = {'a': 'A',
     'b': 'B',
     'c': 'C',
     'd': 'D',
     'e': 'E'
}
k, v = sorted(e.keys()), sorted(e.values())
print "{}: {}".format(k[3], v[3])

结果: d: D

OrderedDict() 不是必需的。

有更简单的方法吗?谁能解释一下为什么字典中的元素是这样排序的:

keys: 'a', 'c', 'b', 'e', 'd'


values: 'A', 'C', 'B', 'E', 'D'

...这违背了我原来字典的结构?

您没有使用有序字典。

e = OrderedDict()
e = {'a': 'A',
     'b': 'B',
     'c': 'C',
     'd': 'D',
     'e': 'E'
    }

第一行创建一个 OrderedDict。第二行将其丢弃并替换为无序的常规字典。 (Python 变量没有类型。)

但你不能只这样做:

e = OrderedDict({'a': 'A', ...})

...因为那仍然是一个普通的字典,仍然是无序的,OrderedDict 无法神奇地重新创建您的原始源顺序。

试试这个:

e = OrderedDict([('a', 'A'), ('b', 'B'), ...])

现在你应该有一个类似 dict 的对象,它的顺序是你想要的。

And can someone explain why the elements in the dictionary are ordered like this ... which defies the structure of my original dictionary?

因为字典是无序的。它们只是哈希映射,而哈希映射没有固有的顺序。


请注意,您也可以这样做,这将保留键和值的配对(而您的单独排序不会):

print sorted(e.items())[3]