检索 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]
我只想检索字典中的第四项"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]