[英]Retrieving Key and Values from Dictionary
我使用了一个字典,如下所示:
streetno={
"1":"Sachin Tendulkar",
"2":"Sehawag",
"3":"Dravid",
"4":"Dhoni",
"5":"Kohli"
}
在此之后,我要求用户输入i / p。 然后,根据用户输入,我想从字典中检索键或值。 我该如何实现呢? 我可以使用哪种方法来实现?
我可能对此有误解,但看起来您可能正在要求用户提供键或值。 如果他们给您一个键,您想返回值,如果他们给您一个值,您想返回键。
如果您要查找的是,那么最简单的方法是将交换了值和键的条目添加到字典中,例如:
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()
。
您可以使用反向映射创建辅助字典:
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]
)。 您的键似乎是字符串,因此您可以不必将其强制转换为整数,也可以避免任何可能是字符串或整数的问题。 如果您的密钥是整数,那么您将不得不进行一些转换和修改-我将其留给您练习。
至于另一种方式,如果您想创建字典的反向映射(我认为您是这样做的),那么最好看看这个SO问答 。 您将必须为其创建单独的字典,然后使用该方法向后映射键值。
一小段代码示例可帮助您入门...
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]
检查此站点上的“词典”部分以获取文档: http : //docs.python.org/tutorial/datastructures.html
streetno.keys()提供密钥,您可以遍历密钥以获取值:
伪代码:
foreach key in streetno.keys() print "key: ", key, ", value: ", streetno[ key ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.