Python:获取字典中索引的键

Python:获取字典中索引的键,python,dictionary,Python,Dictionary,可能重复: 如何获取字典中索引的键 例如: i = {'a': 0, 'b': 1, 'c': 2} 因此,如果我想获取i[0]的键,它将返回“a”根据定义,字典是无序的,因此无法索引。对于这种功能,请使用有序字典 Python字典有一个键和一个值,您需要的是指向给定值的键 只能在循环中执行此操作: [k for (k, v) in i.iteritems() if v == 0] 注意,dict中每个值可以有多个键{'a':0,'b':0}是完全合法的 如果您想要订购,您需要使用列表或

可能重复:

如何获取字典中索引的键

例如:

i = {'a': 0, 'b': 1, 'c': 2}

因此,如果我想获取i[0]的键,它将返回“a”

根据定义,字典是无序的,因此无法索引。对于这种功能,请使用有序字典

Python字典有一个键和一个值,您需要的是指向给定值的键

只能在循环中执行此操作:

[k for (k, v) in i.iteritems() if v == 0]
注意,dict中每个值可以有多个键<代码>{'a':0,'b':0}是完全合法的

如果您想要订购,您需要使用列表或:

你可以这样做:

i={'foo':'bar', 'baz':'huh?'}
keys=i.keys()  #in python 3, you'll need `list(i.keys())`
values=i.values()
print keys[values.index("bar")]  #'foo'
但是,无论何时更改字典,都需要更新键和值,因为字典在3.7之前的Python版本中没有排序。在这些版本中,每当插入新的键/值对时,您认为的顺序就会消失,并被新的(或多或少是随机的)顺序所取代。因此,在字典中查询索引是没有意义的

从Python 3.6开始,对于Python的CPython实现,字典会记住插入项的顺序。从Python 3.7开始,字典按插入顺序排序。

还要注意的是,你问的可能不是你真正想要的。不能保证字典中的逆映射是唯一的。换句话说,您可以拥有以下词典:

d={'i':1, 'j':1}

在这种情况下,不可能知道您是想要
i
还是
j
,事实上,这里的答案无法告诉您将选择哪个(
'i'
'j'
)(同样,因为字典是无序的)。在那种情况下你想发生什么?您可以获得可接受密钥的列表。。。但我猜你对字典的基本理解不太正确

您希望将值映射回键。python字典中没有索引。请看,不要认为这是他所要求的。他想使用一个编号的位置作为索引list@PaulSeeb当前位置我们正在猜测OP的意思,让我们看看是否会有任何澄清。我认为你的回答非常误导。字典是无序的。你不应该在根本上违背编程逻辑的东西上发表文章。@PaulSeeb——你认为我为什么要加上所有的“你想要的可能不是你想要的”和“我猜你对词典的基本理解不太正确”?只是教坏习惯/原则,即使有人解释为什么它不好,这个人也可能会说,“这对我来说很有效,所以这次我会用它。”。最好是教授这一课,让他们找出解决方法,如果这真的是他们想要的。
OrderedDict
s也不能被索引。是的,但是当调用dict.keys()或dict.values()时,顺序会被保留。因此,这些列表上的索引对应于dictionaryPython 3.7更新的“索引”:字典现在已排序:
d={'i':1, 'j':1}