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

2024-06-01 02:02:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

>>> 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

我可以这样做:(我不知道这是否有效,我不测试它)

>>> mydict = {'a':1,'b':2,'c':3}
>>> mydict['a']
1
# etc...
>>> def reversal(z):
...     tmp = {}
...     for x,y in z.items():
...         tmp[y] = x
...     return tmp
>>> mydict = reversal(mydict)
>>> mydict[1]
a
# etc
>>> mydict = reversal(mydict)
>>> mydict['c']
3
# etc, etc, etc...

有什么简单的方法吗?
首先:我知道chr()和ord(),我的代码不是关于字母。。。这只是一个简单的例子。
第二:在我的字典中不会有两个相同的值,所以不会有任何重复键的问题。。。你知道吗


Tags: oftheindictionary字典valuemyetc
3条回答

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

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

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

mydict = {'a':1,'b':2,'c':3}

new_dict = {b:a for a, b in mydict.items()}

你需要这样的东西

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'}

或者

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'}

相关问题 更多 >