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 ...任何想法?
我一直在嘗試使用dict.keys拿到鑰匙我的字典的名單的看法,但它一直給我:問題dict.keys不打印列表,但打印列表的
def reverse(PB = {'l': 3, 'y':1, 'u':2}): print(PB.keys())
打印:
dict_keys(['u', 'l', 'y'])
我從來沒有這個問題之前,我有一個Python版本超出2.7 ...任何想法?
的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打我吧 – 2013-03-16 03:04:39
非常感謝你的回答!是一個很大的幫助。 – 2013-05-04 02:47:55