2014-02-06 89 views
1

我嘗試新的密鑰key值寄存器添加到鑰匙和密鑰將被視爲變量名在循環Python字典,這裏是我的代碼:從變量中添加新的密鑰到python字典?

def harvestTrendingTopicTweets(twitterAPI, trendingTopics, n): 
    statuses = {} 
    for category in trendingTopics: 
     for trend in trendingTopics[category]: 
      results = twitterAPI.search.tweets(q=trend, count=n, lang='es') 
     statuses[category][trend] = results['statuses'] 
    return statuses 

trendingTopics是生成字典此JSON後

{ 
    "General": ["EPN","Peña Nieto", "México","PresidenciaMX"], 
    "Acciones politicas": ["Reforma Fiscal", "Reforma Energética"] 
} 

到目前爲止,我得到KeyError: u'Acciones politicas'出錯信息等關鍵不存在。我怎樣才能做到這一點?

回答

2

你有兩種選擇。要麼使用dict.setdefault

statuses.setdefault(category, {})[trend] = results['statuses'] 

setdefault檢查爲重點category,如果不存在,將statuses[category]的第二個參數,在這種情況下,一個新的dict。接着從函數返回,所以[trend]是在內部statuses字典操作,無論是已經存在


新的一個或一個或創建一個defaultdict

from collections import defaultdict 
... 
statuses = defaultdict(dict) 

defaultdict類似於一個dict,但沒有找到一個鍵時,而不是提高KeyError s,它調用作爲參數傳遞的方法。在這種情況下,dict()將在該密鑰處創建一個新的dict實例。

+0

'statuses = defaultdict(dict)'中的'dict'是什麼意思? – diegoaguilar

1

在爲字典元素指定值之前,需要確保密鑰實際存在。所以,你可以做

statuses.setdefault(category, {})[trend] = results['statuses'] 

這可以確保,如果沒有找到category,那麼第二個參數將作爲默認值。因此,如果當前category不存在於字典中,則將創建新的字典。

相關問題