我在下面有一个字典:
colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}
如何索引字典中的第一个条目?
colors[0]
将返回 KeyError
原因很明显。
原文由 Harpal 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果有人还在看这个问题,目前接受的答案现在已经过时了:
从 Python 3.7 \* 开始,字典是 保留顺序的,即它们现在的行为类似于 collections.OrderedDict
s。不幸的是,仍然没有专门的方法来索引字典的 keys()
/ values()
,所以获取字典中的第一个键/值可以这样做
first_key = list(colors)[0]
first_val = list(colors.values())[0]
或者(这避免了将键视图实例化为列表):
def get_first_key(dictionary):
for key in dictionary:
return key
raise IndexError
first_key = get_first_key(colors)
first_val = colors[first_key]
如果你需要一个 n
第一个键,那么同样
def get_nth_key(dictionary, n=0):
if n < 0:
n += len(dictionary)
for i, key in enumerate(dictionary.keys()):
if i == n:
return key
raise IndexError("dictionary index out of range")
\* CPython 3.6 已经包含了插入顺序的字典,但这只是一个实现细节。语言规范包括从 3.7 开始的插入顺序字典。
原文由 Pasha 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
在 Python 3.6 及之前的版本中,字典是无序的。如果您不关心条目的顺序并希望通过索引访问键或值,您可以使用
keys = list(d)
为字典d
创建一个键列表,并且然后通过索引keys[i]
访问列表中的键,并使用d[keys[i]]
的关联值。如果您确实关心条目的顺序,从 Python 2.7 开始,您可以使用
collections.OrderedDict
。或使用对列表如果您不需要按键访问。 (顺便说一下,为什么你的数字是字符串?)
在 Python 3.7 中,普通字典是有序的,因此您不再需要使用
OrderedDict
(但您仍然可以 - 它基本上是相同的类型)。 Python 3.6 的 CPython 实现已经包含了该更改,但由于它不是语言规范的一部分,因此您不能在 Python 3.6 中依赖它。