所以,我创建了一个字典上的一个小游戏设置难度级别。
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))
但我还是想知道是否有其他方法来实现这一点,那么为什么等。 所以在这里我去了QS:
我可以达到同样的结果,而不装箱了新的元素,如diff_keys?
为什么diff_dict.keys
显示字典。 名称? 难道我做错了什么?
在一个侧面说明,我怎么能打印键或像列表,元组等其他元素,而无需字符串引号(')?
同上#3,但在方括号([])
感谢和cheerio :-)
问题是,在Python 3字典的方法keys()
不返回一个列表,而是一种特殊的视图对象 。 该对象是否具有神奇的__str__
方法是引擎盖下的物体上你每次叫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__
不叫。 (基本上不打印。)在你喜欢的任何方式构建一个字符串,各具特色的数据进去,然后打印。 您可以使用字符串格式化,以及大量有用的字符串方法 。