2013-03-16 120 views
1

我一直在尝试使用dict.keys拿到钥匙我的字典的名单的看法,但它一直给我:问题dict.keys不打印列表,但打印列表的

def reverse(PB = {'l': 3, 'y':1, 'u':2}): print(PB.keys())

打印:

dict_keys(['u', 'l', 'y'])

我从来没有这个问题之前,我有一个Python版本超出2.7 ...任何想法?

回答

4

的Python 3返回view objects

目的通过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'] 

另外,要小心路过mutable objects as default arguments

>>> 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} 
+1

+1打我吧 – 2013-03-16 03:04:39

+0

非常感谢你的回答!是一个很大的帮助。 – 2013-05-04 02:47:55