dict.values() 没有按预期返回列表

dict.values() doesn't return a list as expected

提问人:nachtblume 提问时间:4/13/2022 最后编辑:Timur Shtatlandnachtblume 更新时间:11/18/2023 访问量:1956

问:

我正在尝试从我的字典中获取值

for elem in set(sample_txt):

       d = {elem:sample_txt.count(elem)}

print(d.values())

d.values() 应该返回一个值列表:

dict. keys() 和 dict. values() 方法返回键列表 或显式值。还有一个 items() 返回一个列表 (键,值)元组,这是检查所有元组的最有效方法 字典中的键值数据。与 developers.google.com 相比

所以我应该得到类似的东西.但是,在我的示例中,我得到:['a', 'b', 'etc']

type(d.values())---> <级“dict_values”>

怎么了?

python 列表 字典

评论

1赞 Barmar 4/13/2022
你每次都是在循环中替换,而不是增加它。因此,您只会从循环中获取最后一个值。用dd[elem] = sample_txt.count(elem)
0赞 nachtblume 4/13/2022
Ty @Barmar,这也是一个错误。
0赞 feetwet 4/21/2023
这回答了你的问题吗?如何从字典中获取值列表?

答:

7赞 kosciej16 4/13/2022 #1

您发布的报价与 python2 有关,它确实返回了 .在python3中,你需要自己投射listlist(d.values())

1赞 dawg 4/13/2022 #2

鉴于:

Python 3.10.2 (main, Feb  2 2022, 06:19:27) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin

对于 Python 3,返回一个 dict_value 对象,该对象是 dict 视图类之一:d.values()

>>> txt='abcaaab'
>>> d={k:txt.count(k) for k in set(txt)}
>>> d
{'a': 4, 'c': 1, 'b': 2}
>>> d.values()
dict_values([4, 1, 2])

dict 视图的一个巧妙之处在于,如果底层 dict 发生更改,则视图会更新:

>>> d
{'a': 4, 'c': 1, 'b': 2}
>>> v=d.values()
>>> v
dict_values([4, 1, 2])
>>> d['z']='live update!'
>>> v
dict_values([4, 1, 2, 'live update!'])

根据 Python 的版本,表示形式可能包括内容,也可能仅包含类。