打印没有字典名称的字典键?如何/为什么?

2023-11-25

所以我创建了一个字典来设置小游戏的难度级别。

diff_dict = {'easy':0.2, 'medium':0.1, 'hard':0.05} # difficulty level dict

键将是难度名称和我用来计算难度的一些比率的值。

所以我试图弄清楚如何只向用户打印密钥:

print('\nHere are the 3 possible choices: ',diff_dict.keys())

这将打印为:

Here are the 3 possible choices:  dict_keys(['hard', 'easy', 'medium'])

显然我不想显示字典名称,所以我继续搜索,并且确实找到了一个有效的解决方案:

diff_keys = diff_dict.keys()
print ('\nHere are the 3 possible choices: ',list(diff_keys))

但我还是想知道是否还有其他方法可以实现这一点,以及为什么等等。所以我在这里提出问题:

  1. 我可以在不创建新元素(例如 diff_keys)的情况下获得相同的结果吗?

  2. 为什么diff_dict.keys显示字典。姓名?难道我做错了什么?

  3. 顺便说一句,如何在没有字符串引号 (') 的情况下打印键或其他元素(如列表、元组等)?

  4. 与上面的 #3 相同,但有括号 ([ ])

谢谢,干杯:-)


问题是,在 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.) 以您喜欢的任何方式构造一个字符串,将数据写入其中,然后打印它。您可以使用字符串格式以及许多有用的字符串方法.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印没有字典名称的字典键?如何/为什么? 的相关文章

随机推荐