Python 从字典中检索键和值

Python 从字典中检索键和值,python,dictionary,Python,Dictionary,我使用的字典如下所示: streetno={ "1":"Sachin Tendulkar", "2":"Sehawag", "3":"Dravid", "4":"Dhoni", "5":"Kohli" } 在此之后,我向用户询问I/p。然后,根据用户输入,我想从字典中检索键或值。如何实现此功能??我可以使用哪种方法来实现此功能???查看此网站上的“词典”部分以获取文档: streetno.keys()传递键,您可以迭代键以获取值: 伪代码:

我使用的字典如下所示:

streetno={
    "1":"Sachin Tendulkar",
    "2":"Sehawag",
    "3":"Dravid",
    "4":"Dhoni",
    "5":"Kohli"
}      
在此之后,我向用户询问I/p。然后,根据用户输入,我想从字典中检索键或值。如何实现此功能??我可以使用哪种方法来实现此功能???

查看此网站上的“词典”部分以获取文档:

streetno.keys()传递键,您可以迭代键以获取值:

伪代码:

foreach key in streetno.keys() print "key: ", key, ", value: ", streetno[ key ] 街道上的每个钥匙编号钥匙() 打印“键:,键,”,值:,街道号[键]
您可以创建具有反向映射的辅助字典:

In [4]: dict((v,k) for k,v in streetno.items())
Out[4]: 
{'Dhoni': '4',
 'Dravid': '3',
 'Kohli': '5',
 'Sachin Tendulkar': '1',
 'Sehawag': '2'}
一旦知道需要映射的方式,您可以使用原始字典或辅助字典进行查找。

如果用户输入“整数”,您可以显式索引到字典中(即
streetno[value]
)。您的键看起来是字符串,因此您不必将它们转换为整数,也不必做任何事情来回避它可能是字符串或整数的问题。如果你的键是整数,那么你就必须做一些施法和欺骗——这是我留给你的练习


至于另一种方法,如果你想创建字典的反向映射(我想你是这样做的),那么你最好看看。您必须为它创建一个单独的字典,并使用该方法向后映射键值。

我可能误解了这一点,但看起来您可能要求用户为您提供一个键或值。如果他们给你一个键,你想返回值,如果他们给你一个值,你想返回键

如果这就是您要查找的内容,最简单的方法是将值和键交换后的条目添加到字典中,例如:

streetno={"1":"Sachin Tendulkar","2":"Sehawag","3":"Dravid","4":"Dhoni","5":"Kohli"}
streetno.update([(v, k) for k, v in streetno.items()])
这将生成以下词典:

>>> pprint(streetno)
{'1': 'Sachin Tendulkar',
 '2': 'Sehawag',
 '3': 'Dravid',
 '4': 'Dhoni',
 '5': 'Kohli',
 'Dhoni': '4',
 'Dravid': '3',
 'Kohli': '5',
 'Sachin Tendulkar': '1',
 'Sehawag': '2'}
通过此操作,您可以获得输入并在字典中查找值,而无需进行任何额外检查:

key = raw_input("Enter name or number (i/p):")
result = streetno.get(key)

如果您使用的是Python3.x,请将
raw\u input()
替换为
input()

一个小的代码示例,让您开始使用

streetno =
    {
     "1":"Sachin Tendulkar",
     "2":"Sehawag",
     "3":"Dravid",
     "4":"Dhoni",
     "5":"Kohli"
     }

input=raw_input()
try:
    print streetno[input]
except KeyError:
    print [k for k, v in streetno.items() if v == input][0]

你能满足你的要求吗?在什么情况下需要值,在什么情况下需要键?请举例说明您希望能够执行的操作。如果用户输入整数,则我希望检索相应的字符串值。如果用户输入我想要对应键的字符串值..请注意,
iteritems()
自Python 2.7以来就被弃用,并将在Python 3.x中消失。这并没有回答问题…它只是打印每个键值对。这篇文章的目的是阅读有关词典的文档。我假设读者在阅读文档后理解了Pyhton中的词典是如何工作的!