繁体   English   中英

从变量向python字典添加新键?

[英]Adding new keys to a python dictionary from variables?

我正在尝试将新的键 - 键值寄存器添加到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'错误消息,因为这样的密钥不存在。 我怎么能做到这一点?

你有两个选择。 使用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 ,而是调用作为参数传递的方法。 在这种情况下, dict()在该键上创建一个新的dict实例。

在为字典元素分配值之前,需要确保该键实际存在。 所以,你可以做到

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

这样可以确保,如果找不到category ,则第二个参数将用作默认值。 因此,如果字典中不存在当前category ,则将创建新字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM