如何获取字典中的索引键?
例如像:
i = {'a': 0, 'b': 1, 'c': 2}
所以如果我想获取 i[0] 的密钥,它将返回 'a'
如何获取字典中的索引键?
例如像:
i = {'a': 0, 'b': 1, 'c': 2}
所以如果我想获取 i[0] 的密钥,它将返回 'a'
你可以这样做:
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 字典有一个键和一个值,你要的是什么键指向一个给定的值。
您只能在循环中执行此操作:
[k for (k, v) in i.iteritems() if v == 0]
请注意,字典中的每个值可以有多个键;{'a': 0, 'b': 0}
是完全合法的。
如果要订购,则需要使用列表或OrderedDict 实例:
items = ['a', 'b', 'c']
items.index('a') # gives 0
items[0] # gives 'a'
根据定义,字典是无序的,因此不能被索引。对于这种功能,请使用有序字典。Python 有序字典