可能重复:
Inverse dictionary lookup - Python
reverse mapping of dictionary with Python的Python:获得指标的关键在字典
我如何获得索引键的字典?
例如像:
i = {'a': 0, 'b': 1, 'c': 2}
所以,如果我要得到我的钥匙[0],它会返回一个“
可能重复:
Inverse dictionary lookup - Python
reverse mapping of dictionary with Python的Python:获得指标的关键在字典
我如何获得索引键的字典?
例如像:
i = {'a': 0, 'b': 1, 'c': 2}
所以,如果我要得到我的钥匙[0],它会返回一个“
根据定义字典是无序的,因此不能被索引。对于这种功能,使用有序的字典。 Python Ordered Dictionary
Python字典有一个键和一个值,你问的是哪个键(S)指向给定值。
你只能这样做在一个循环:
[k for (k, v) in i.iteritems() if v == 0]
注意,可以有每一个字典值超过一个关键; {'a': 0, 'b': 0}
是完全合法的。
如果您想订购您可能需要使用列表或一个OrderedDict instance代替:
items = ['a', 'b', 'c']
items.index('a') # gives 0
items[0] # gives 'a'
不要以为这是他所要求的。他想用列表中的编号位置“索引” – 2012-07-24 14:27:42
@PaulSeeb:我们猜测OP的含义是什么,让我们看看是否会有任何澄清。 – 2012-07-24 14:31:07
您可以做这样的事情:
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'
但是,任何时候你改变字典,你需要更新你的钥匙,价值观,因为字典是没有顺序的。你插入一个新的键/值对的任何时间,您认为为了你有消失,并且由新的(或多或少随机的)顺序替换。因此,在字典中索引索引是没有意义的。
另外请注意,你所要求的是可能不是你真正想要的东西。不能保证字典中的逆映射是唯一的。换句话说,可能有以下字典你:
d={'i':1, 'j':1}
在这种情况下,这是不可能知道你是否想i
或j
,实际上这里没有答案就能告诉你这('i'
或'j'
)将被挑选(再次,因为字典是无序的)。你想在那种情况下发生什么?你可以得到可以接受的密钥列表...但我猜字典你的基本认识是不完全正确。
通过def。字典是键值对的无序集合。所以你不能有一个键值对的索引。您可以将它们保存在两个有序列表中,其索引值与键和值相同。然后,对于密钥列表中特定索引处的每个密钥,您可以从值列表中检索相关值。
或更好地使用有序字典。
d = OrderedDict([('first', 1),
...( '第二',2), ...( '第三',3)])
入住这ordered list
要映射的*值*回到关键。 python字典中没有索引。 – 2012-07-24 14:21:56
查看http://stackoverflow.com/questions/3221475/reverse-mapping-of-dictionary-with-python和http://stackoverflow.com/questions/483666/python-reverse-inverse-a-mapping – 2012-07-24 14:23:12