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中的词典是如何工作的!