2014-02-26 37 views
0

在下面的代碼中,我試圖獲得一個不存在於mydict中的密鑰。因此,在我的get方法中,我構造了字典,但在輸出中看不到相同的內容,我是什麼?做錯了python字典獲取方法使用新密鑰

>>> mydict={'aa':1} 
>>> if mydict.get('PROF',dict(PROF=dict(students=dict()))): 
...  print mydict['PROF'] 
... 
{'aa': 1} 
+0

此代碼導致「KeyError」。你可能正在尋找'setdefault'。 – filmor

+0

你沒有在'mydict'中插入'PROF'。使用'setdefault'而不是'get' – mshsayem

回答

1
In [658]: mydict={'aa':1} 
    ...: mydict['PROF'] = mydict.get('PROF',dict(PROF=dict(students=dict()))) 
    ...: print mydict['PROF'] 
{'PROF': {'students': {}}} 

dict.get通常用作if-statement的替代:

In [673]: d={} 
    ...: if not d.get('b'): 
    ...:  d['b']=0 
    ...: d['b']+=1 
    ...: print d 
{'b': 1} 

In [674]: d={} 
    ...: d['b']=d.get('b', 0)+1 
    ...: print d 
{'b': 1} 

而在你的情況下,最好使用setdefault作爲@msvalkon提到。

0

下面是人們在評論中提出的dict.setdefault方法的示例,但未將其寫爲答案。

>>> mydict = {'aa': 1} 
>>> mydict.setdefault("PROF", dict(students=dict())) 
{'students': {}} 
>>> mydict 
{'aa': 1, 'PROF': {'students': {}}} 
>>> 

setdefault(k, default)有點像get(k, default)但不是返回默認值,但它確實dict[k] = default