【问题标题】:Dictionary get value without knowing the key字典在不知道密钥的情况下获取价值
【发布时间】:2021-10-14 20:13:25
【问题描述】:

在 python 中,如果我有一个具有单个键值对的字典,并且如果我不知道键可能是什么,我该如何获取值?

(如果我有一个包含超过 1 个键值对的 dict,我如何在不知道任何键的情况下返回任何一个值?)

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    你只需要使用dict.values()

    这将返回一个包含字典所有值的列表,而无需指定任何键。

    您可能还对以下内容感兴趣:

    • .keys():返回包含键的列表
    • .items():返回元组列表(key, value)

    请注意,在 Python 3 中,返回的值实际上不是正确的列表,而是 view object

    【讨论】:

    • 对于单个键值对,它仍然将值放在列表中还是单独放置?
    • @Yunti 在某种列表中(如果您使用的是 Python 3,则查看对象,如果您使用的是 Python 2,则查看实际列表),但不是它自己的。
    • 您可以随时使用list()@Yunti 列出清单
    • @Yunti 获取单个值,只需执行dict.values()[0]
    • 对于单项字典似乎有点过头了...(在 Python 3 中,您需要使用values(),然后转换为列表,然后取第一项...)真的没有别的办法了吗?
    【解决方案2】:

    其他解决方案,使用popitem并解包:

    d = {"unknow_key": "value"}
    _, v = d.popitem()
    assert v == "value"
    

    【讨论】:

      【解决方案3】:

      除了 Delgan 的出色回答,这里有一个 Python 3 示例,演示了如何使用视图对象:

      在 Python 3 中,您可以在不知道/不使用键的情况下打印值,因此:

      for item in my_dict:
          print( list( item.values() )[0] )
      

      示例:

          cars = {'Toyota':['Camry','Turcel','Tundra','Tacoma'],'Ford':['Mustang','Capri','OrRepairDaily'],'Chev':['Malibu','Corvette']}
          vals = list( cars.values() )
          keyz = list( cars.keys() )
          cnt = 0
          for val in vals:
              print('[_' + keyz[cnt] + '_]')
              if len(val)>1:
                  for part in val:
                      print(part)
              else:
                  print( val[0] )
              cnt += 1
      
          OUTPUT:
          [_Toyota_]
          Camry
          Turcel
          Tundra
          Tacoma
          [_Ford_]
          Mustang
          Capri
          OrRepairDaily
          [_Chev_]
          Malibu
          Corvette

      该 Py3 文档再次引用:

      https://docs.python.org/3.5/library/stdtypes.html#dict-views

      【讨论】:

      • 导致ValueError: need more than 1 value to unpack 错误。
      【解决方案4】:

      另外两种方式:

      >>> d = {'k': 'v'}
      
      >>> next(iter(d.values()))
      'v'
      
      >>> v, = d.values()
      >>> v
      'v'
      

      【讨论】:

        【解决方案5】:

        另一种方法:使用 for/in 循环遍历字典,我们得到键值对的键,然后我们得到值的值。

        >>>my_dict = {'a' : 25}
        >>>for key in my_dict:
               print(my_dict[key])
        25
        
        >>> my_other_dict = {'b': 33, 'c': 44}
        >>> for key in my_other_dict:
                print(my_other_dict[key])
        33
        44
        

        【讨论】:

          猜你喜欢
          • 2018-01-18
          • 1970-01-01
          • 2021-11-14
          • 1970-01-01
          • 2013-08-19
          • 2022-10-08
          • 2020-01-02
          • 2023-04-02
          • 2021-12-20
          相关资源
          最近更新 更多