不知道键名如何获取字典中的值?

37

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

(如果我有一个含有多个键值对的字典,但又不知道任何键,那么我如何返回其中任意一个值?)

5个回答

54

您只需使用 dict.values()

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

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

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

请注意,在Python 3中,返回的值实际上不是真正的列表,而是视图对象


对于单个键值对,它仍然将值放在列表中还是独立存在? - Yunti
在某种列表中(如果您使用的是Python 3,则为视图对象,如果您使用的是Python 2,则为实际列表),但不是独立存在。 - Delgan
3
你可以随时使用list()将其转换为列表。@Yunti - Aftnix
3
要获取单个值,只需执行 dict.values()[0] - Dhruv Ghulati
3
似乎对于一个单项字典来说有点过度了...(在Python 3中,您需要使用values(),然后转换为列表,然后取第一个项目...)难道真的没有其他方法吗? - Yuval A.
显示剩余2条评论

13

另一种解决方案是使用popitem和解包:

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

8

除了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/zh-cn/3.5/library/stdtypes.html#dict-views


导致“ValueError: 需要多于一个值来分解”错误。 - Schütze

3

还有两种方法:

>>> d = {'k': 'v'}

>>> next(iter(d.values()))
'v'

>>> v, = d.values()
>>> v
'v'

1

另一种方法是:通过 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接