繁体   English   中英

从字典中检索键和值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM