我使用了如下所示的词典:
streetno={
"1":"Sachin Tendulkar",
"2":"Sehawag",
"3":"Dravid",
"4":"Dhoni",
"5":"Kohli"
}
在此之后,我要求用户提供i / p。然后,根据用户输入,我想从字典中检索键或值。我该如何实现?我可以用哪种方法来实现这个?
答案 0 :(得分:2)
我可能会误解这一点,但看起来你可能会要求用户给你一个键或一个值。如果他们给你一个密钥你想要返回值,如果他们给你一个值你想要返回密钥。
如果您正在寻找,最简单的方法是在字典中添加值和键交换条目,例如:
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)
如果您使用的是Python 3.x,请将raw_input()
替换为input()
。
答案 1 :(得分:0)
您可以使用反向映射创建辅助字典:
In [4]: dict((v,k) for k,v in streetno.items())
Out[4]:
{'Dhoni': '4',
'Dravid': '3',
'Kohli': '5',
'Sachin Tendulkar': '1',
'Sehawag': '2'}
一旦知道需要映射的方式,就可以使用原始字典或辅助字典进行查找。
答案 2 :(得分:0)
如果用户输入“整数”,您可以显式索引到字典(即streetno[value]
)。你的密钥似乎是字符串,所以你可以不必将它们作为整数强制转换或做任何事情来解决它可能是字符串或整数的问题。如果你的钥匙是整数,那么你将不得不做一些铸造和指导 - 我把它作为练习留给你。
至于另一种方式'如果你想创建字典的反向映射(我认为你这样做),那么你最好看看this SO question and answer。您必须为它创建一个单独的字典,并使用该方法向后映射键值。
答案 3 :(得分:0)
一个小代码示例,可以帮助您入门......
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]
答案 4 :(得分:-1)
请查看本网站上的“词典”部分以获取文档:http://docs.python.org/tutorial/datastructures.html
streetno.keys()提供密钥,您可以迭代密钥以获取值:
伪码:
foreach key in streetno.keys() print "key: ", key, ", value: ", streetno[ key ]