Har*_*pal 72 python indexing dictionary
我在下面有一个词典:
colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}
Run Code Online (Sandbox Code Playgroud)
如何索引字典中的第一个条目?
colors[0]将返回一个KeyError明显的原因.
Sve*_*ach 89
字典在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")]
Run Code Online (Sandbox Code Playgroud)
如果您不需要按键访问.(顺便提一下,为什么你的数字串?)
在Python 3.7中,正常的字典是有序的,因此您不再需要使用OrderedDict(但您仍然可以 - 它基本上是相同的类型).Python 3.6的CPython实现已包含该更改,但由于它不是语言规范的一部分,因此您不能在Python 3.6中依赖它.
Pas*_*sha 68
如果还有人在看这个问题,那么目前接受的答案现在已经过时了:
从Python 3.6开始,字典是保持顺序的,现在它们的行为与以前完全一样collections.OrderedDict.不幸的是,还没有专门的方法来索引keys()/ values()字典的,因此让在字典中的第一个键/值可以做到
first_key = list(colors)[0]
first_val = list(colors.values())[0]
Run Code Online (Sandbox Code Playgroud)
或者(这可以避免将键视图实例化为列表):
def get_first_key(dictionary):
for key in dictionary:
return key
raise IndexError
first_key = get_first_key(colors)
first_val = colors[first_key]
Run Code Online (Sandbox Code Playgroud)
如果你需要一个n-th键,那么类似
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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
278770 次 |
| 最近记录: |