【问题标题】:Retrieving Key and Values from Dictionary从字典中检索键和值
【发布时间】:2012-01-03 18:36:52
【问题描述】:

我使用了如下所示的字典:

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

在此之后,我向用户询问 i/p。然后,根据用户输入,我想从字典中检索键或值。我该如何实现呢?我可以使用哪种方法来实现它??

【问题讨论】:

  • 您能满足您的要求吗?什么情况下需要值,什么情况下需要密钥?
  • 请举例说明您希望能够做什么。
  • 如果用户输入整数然后我想检索相应的字符串值。如果用户输入我想要对应键的字符串值..

标签: python dictionary


【解决方案1】:

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

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

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()

【讨论】:

    【解决方案2】:

    如果用户输入“整数”,您可以显式索引到字典中(即streetno[value])。您的键似乎是字符串,因此您不必将它们转换为整数或做任何事情来解决它可能是字符串或整数的问题。如果您的键是整数,那么您将不得不做一些转换和修饰 - 我将其作为练习留给您。

    至于反过来,如果你想创建字典的反向映射(我想你会这样做),那么你最好看看this SO question and answer。您必须为其创建一个单独的字典,并使用该方法将键值向后映射。

    【讨论】:

      【解决方案3】:

      帮助您入门的小代码示例...

      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】:

        您可以使用反向映射创建辅助字典:

        In [4]: dict((v,k) for k,v in streetno.items())
        Out[4]: 
        {'Dhoni': '4',
         'Dravid': '3',
         'Kohli': '5',
         'Sachin Tendulkar': '1',
         'Sehawag': '2'}
        

        一旦知道需要映射的方式,就可以使用原始字典或辅助字典进行查找。

        【讨论】:

        • 请注意,iteritems() 自 Python 2.7 起已弃用,将在 Python 3.x 中消失
        【解决方案5】:

        查看本网站上的“字典”部分以获取文档:http://docs.python.org/tutorial/datastructures.html

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

        伪代码:

        streetno.keys() 中的 foreach 键 打印“键:”,键,“,值:”,街号[键]

        【讨论】:

        • 这并不能回答问题...它只是打印每个键值对。
        • 这篇文章的目的是阅读有关字典的文档。我假设读者在阅读文档后了解字典在 Pyhton 中的工作原理!
        猜你喜欢
        • 2023-02-08
        • 2013-04-08
        • 2021-11-26
        • 2020-10-01
        • 2021-09-23
        • 2013-03-27
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        相关资源
        最近更新 更多