我一直试图通过使用 dict.keys 从我的 dict 中获取一个键列表,但它一直给我:
def reverse(PB = {'l': 3, 'y':1, 'u':2}):
print(PB.keys())
印刷:
dict_keys(['u', 'l', 'y'])
在我拥有超过 2.7 的 python 版本之前,我从来没有遇到过这个问题......有什么想法吗?
我一直试图通过使用 dict.keys 从我的 dict 中获取一个键列表,但它一直给我:
def reverse(PB = {'l': 3, 'y':1, 'u':2}):
print(PB.keys())
印刷:
dict_keys(['u', 'l', 'y'])
在我拥有超过 2.7 的 python 版本之前,我从来没有遇到过这个问题......有什么想法吗?
Python 3 返回视图对象:
和返回的对象
dict.keys()
是视图对象。它们提供字典条目的动态视图,这意味着当字典更改时,视图会反映这些更改。dict.values()
dict.items()
您可以将它们转换为列表(Python 2 行为),方法是将它们传递到list()
:
>>> d = {'l': 3, 'y':1, 'u':2}
>>> d.keys()
dict_keys(['y', 'l', 'u'])
>>> list(d.keys())
['y', 'l', 'u']
另外,在传递可变对象作为默认参数时要小心:
>>> def reverse(PB={'l': 3, 'y':1, 'u':2}):
... PB['l'] += 4
...
... print(PB)
...
>>> reverse()
{'y': 1, 'l': 7, 'u': 2}
>>> reverse()
{'y': 1, 'l': 11, 'u': 2}
>>> reverse()
{'y': 1, 'l': 15, 'u': 2}
我默认None
改为:
def reverse(PB=None):
if PB is None:
PB = {'l': 3, 'y':1, 'u':2}