如何索引字典?

我在下面有一个字典:


colors = {

    "blue" : "5",

    "red" : "6",

    "yellow" : "8",

}

如何索引字典中的第一个条目?


colors[0]KeyError由于明显的原因将返回。


弑天下
浏览 943回答 3
3回答

一只斗牛犬

在Python版本(包括Python 3.6)及更高版本中,字典是无序的。如果您不关心条目的顺序,并且仍然想通过索引访问键或值,则可以使用d.keys()[i]和d.values()[i]或d.items()[i]。(请注意,这些方法创建了Python 2.x中所有键,值或项的列表。因此,如果需要多次,则将该列表存储在变量中以提高性能。)如果您确实关心条目的顺序,那么从python 2.7开始,您可以使用collections.OrderedDict。或使用成对清单l = [("blue", "5"), ("red", "6"), ("yellow", "8")]如果您不需要通过密钥访问。(为什么您的数字是字符串?)在Python 3.7中,常规字典是有序的,因此您不再需要使用它OrderedDict(但您仍然可以–它基本上是相同的类型)。Python 3.6的CPython实现已经包含了这一更改,但是由于它不是语言规范的一部分,因此您不能在Python 3.6中依赖它。

哔哔one

如果仍然有人在看这个问题,那么当前接受的答案已经过时了:由于Python 3.7 *字典是顺序保留的,因此它们现在的行为与collections.OrderedDicts 完全相同。不幸的是,仍然没有专用的方法可以索引到字典的keys()/ values()中,因此可以通过以下方法获取字典中的第一个键/值:first_key = list(colors)[0]first_val = list(colors.values())[0]或者(避免将键视图实例化为列表):def get_first_key(dictionary):&nbsp; &nbsp; for key in dictionary:&nbsp; &nbsp; &nbsp; &nbsp; return key&nbsp; &nbsp; raise IndexErrorfirst_key = get_first_key(colors)first_val = colors[first_key]如果您需要n-th键,则类似def get_nth_key(dictionary, n=0):&nbsp; &nbsp; if n < 0:&nbsp; &nbsp; &nbsp; &nbsp; n += len(dictionary)&nbsp; &nbsp; for i, key in enumerate(dictionary.keys()):&nbsp; &nbsp; &nbsp; &nbsp; if i == n:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return key&nbsp; &nbsp; raise IndexError("dictionary index out of range")&nbsp;(* CPython 3.6已经包含有序字典,但这只是实现细节。语言规范包括3.7以后的有序字典。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python