问题是,在 Python 3 dict 的方法中keys()
不返回列表,而是返回一个特殊的查看对象。该对象有一个magic __str__ method每次你在引擎盖下调用一个对象print
那个物体;所以对于通过调用创建的视图对象keys()
__str__
被定义以便结果字符串包括"dict_keys"
.
自己找找:
In [1]: diff_dict = {'easy': 0.2, 'medium': 0.1, 'hard': 0.05}
In [2]: print('Here are the 3 possible choices:', diff_dict.keys())
Here are the 3 possible choices: dict_keys(['medium', 'hard', 'easy'])
In [3]: diff_dict.keys().__str__()
Out[3]: "dict_keys(['medium', 'hard', 'easy'])"
请注意,99.9% 的情况下您不需要直接调用此方法,我这样做只是为了说明事情是如何工作的。
一般来说,当你想要打印一些数据时,你几乎总是想做一些字符串格式化。但在这种情况下,一个简单的str.join就足够了:
In [4]: print('Here are the 3 possible choices:', ', '.join(diff_dict))
Here are the 3 possible choices: medium, hard, easy
那么,回答你的问题:
我可以在不创建新元素(例如 diff_keys)的情况下获得相同的结果吗?
上面显示了一个示例。
为什么 diff_dict.keys 显示字典。姓名?难道我做错了什么?
因为它是__str__
方法就是这样工作的。这是“直接”打印对象时必须处理的问题。
如何在没有字符串引号 (') 的情况下打印键或其他元素(如列表、元组等)?
与上面的 #3 相同,但有括号 ([ ])
打印它们,以便它们__str__
不被调用。 (基本上,不打印them.) 以您喜欢的任何方式构造一个字符串,将数据写入其中,然后打印它。您可以使用字符串格式以及许多有用的字符串方法.