Python 不是按键读取字典,而是按值读取(mydict[key]=value>;>;>;mydict[value]=key)

Python 不是按键读取字典,而是按值读取(mydict[key]=value>;>;>;mydict[value]=key),python,dictionary,Python,Dictionary,这个问题听起来有点奇怪,但通常你可以通过键获取值,例如: >>> mydict = {'a':1,'b':2,'c':3} >>> mydict['a'] 1 >>> mydict['b'] 2 >>> mydict['c'] 3 但我需要做: >>> mydict[1] 'a' >>> mydict[2] 'b' >>> mydict[3] 'c' # In this

这个问题听起来有点奇怪,但通常你可以通过键获取值,例如:

>>> mydict = {'a':1,'b':2,'c':3}
>>> mydict['a']
1
>>> mydict['b']
2
>>> mydict['c']
3
但我需要做:

>>> mydict[1]
'a'
>>> mydict[2]
'b'
>>> mydict[3]
'c'
# In this case, my dictionary have to work like
>>> mydict = {1:'a',2:'b',3:'c'}
在我的程序中,我的字典可以通过两种方式打开,我的意思是:

>>> mydict = {'a':1,'b':2,'c':3}
# Sometimes I need the value of a letter:
>>> mydict['a']
1
# And somethimes, I need the letter of a value.
>>> mydict.REVERSAL[1]
a
我可以这样做:(我不知道这是否有效,我不测试它)

有没有一个简单的方法?
首先:我知道chr()和ord(),我的代码不是关于字母的。。。这只是一个简单的例子。

第二:在我的字典中不会有两个相同的值,所以重复键不会有任何问题…

您需要这样的东西

In [21]: mydict = {'a':1,'b':2,'c':3}
In [22]: dict(zip(mydict.values(),mydict.keys()))
Out[22]: {1: 'a', 2: 'b', 3: 'c'}


要反转词典,可以使用.items():


您可以使用一些字典理解来切换键和值:

>>> mydict = {'a': 1, 'b': 2, 'c': 3}
>>> reversal = {v: k for k, v in mydict.items()}
>>> reversal[1]
'a'

dup of?只有两个字典,
d
{v:k代表k,v代表d.items()}
谢谢你的单行代码!但是您的代码有一个错误,change.keys()for.items()可以修复它。谢谢,但有一个问题,这是列表理解吗?谢谢你指出错误!这实际上是字典理解。另一个答案使用{b:a代表a,b在mydict.keys()}而不是你的代码,区别是什么?区别是我使用了
dict
将元组列表转换为字典的方法。对不起,我不理解。你做了一个dict>>>元组,反转键和值,它们就成了tuple>>>dict?是友好的表现吗?
dict([(1,'a'),(2,'b'),(3,'c'))
这将是模型。谢谢你的帮助,但我会得到另一个更简单的答案(我会投票给你)。
In [23]: dict(i[::-1] for i in mydict.items())
Out[23]: {1: 'a', 2: 'b', 3: 'c'}
In [24]: dict(map(lambda x:x[::-1],mydict.items()))
Out[24]: {1: 'a', 2: 'b', 3: 'c'}
mydict = {'a':1,'b':2,'c':3}

new_dict = {b:a for a, b in mydict.items()}
>>> mydict = {'a': 1, 'b': 2, 'c': 3}
>>> reversal = {v: k for k, v in mydict.items()}
>>> reversal[1]
'a'