【发布时间】:2020-07-20 08:29:41
【问题描述】:
我在窗口 10 中使用 Spyder 4.1.2,我运行了以下代码行:
dict = {"Name": "Zara", "Age": 7}
print("Value: %s" % dict.keys())
我希望输出是一个列表:
['Name', 'Age']
但是输出是
dict_keys(['Name', 'Age'])
谁能告诉我为什么?我该如何解决?
【问题讨论】:
标签: python
我在窗口 10 中使用 Spyder 4.1.2,我运行了以下代码行:
dict = {"Name": "Zara", "Age": 7}
print("Value: %s" % dict.keys())
我希望输出是一个列表:
['Name', 'Age']
但是输出是
dict_keys(['Name', 'Age'])
谁能告诉我为什么?我该如何解决?
【问题讨论】:
标签: python
您只需将代码更改为
dict = {"Name": "Zara", "Age": 7}
print("Value: %s" % list(dict.keys()))
【讨论】:
谁能告诉我为什么?
在 Python 3 中,dict.keys() 返回一个 dict_keys 对象,它实际上是该字典的视图对象,而不是 list 对象。这就是为什么您看不到它作为常规列表打印的原因。
dict.keys()、dict.values()和dict.items()返回的对象是视图对象。它们提供字典条目的动态视图,这意味着当字典更改时,视图会反映这些更改。
可以迭代字典视图以产生各自的数据,并支持成员资格测试 [...]
我该如何解决?
您可以直接将dict 转换为list,如回答here:
my_dict = {"Name": "Zara", "Age": 7}
print("Value: %s" % list(my_dict))
请注意,我将 dict 名称替换为 my_dict。强烈建议避免隐藏名称,特别是内置名称 dict。
【讨论】: