打印字典键时出现意外输出

时间:2020-04-08 01:36:12

标签: python

我在窗口10中使用Spyder 4.1.2,运行下面的代码行:

dict = {"Name": "Zara", "Age": 7}

print("Value: %s" % dict.keys())

我希望输出为列表:

['Name', 'Age']

但是输出是

dict_keys(['Name', 'Age'])

谁能告诉我为什么?我该如何解决?

2 个答案:

答案 0 :(得分:1)

您只需要将代码更改为

dict = {"Name": "Zara", "Age": 7}
print("Value: %s" % list(dict.keys()))

答案 1 :(得分:1)

谁能告诉我为什么?

在Python 3中,dict.keys()返回一个dict_keys对象,该对象实际上是该字典的视图对象,而不是list对象。这就是为什么您看不到它作为常规列表打印的原因。

来自official documentation

dict.keys()dict.values()dict.items()返回的对象是视图对象。它们提供了字典条目的动态视图,这意味着当字典发生更改时,视图将反映这些更改。
可以迭代字典视图以产生其各自的数据,并支持成员资格测试[...]


我该如何解决?

您可以按照回答heredict直接转换为list

my_dict = {"Name": "Zara", "Age": 7}
print("Value: %s" % list(my_dict))

请注意,我将dict的名称替换为my_dict。强烈建议避免隐藏名称,特别是内置在dict中的名称。