首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError: Json

KeyError: Json
EN

Stack Overflow用户
提问于 2015-11-10 23:48:22
回答 2查看 958关注 0票数 1

我正试图为我的Twitch建立一个积分系统,而且由于一些奇怪的原因,我在尝试新的条目时遇到了KeyErrors。这是我的代码:

代码语言:javascript
复制
import urllib2, json

def updateUsers(chan):
    j = urllib2.urlopen('http://tmi.twitch.tv/group/user/' + chan + '/chatters')
    j_obj = json.load(j)
    with open('dat.dat', 'r') as data_file:
        data = json.load(data_file)
    for usr in j_obj['chatters']['viewers']:
        data[usr]['Points'] = "0" # Were the KeyError: u'someguysusername' occurs
    with open('dat.dat', 'w') as out_file:
        json.dump(data, out_file)

updateUsers('tryhard_clan')

如果你想看到Json本身去clan/chatters

我正在以这种格式将用户数据存储在文件中:

代码语言:javascript
复制
{"users": {"cupcake": {"Points": "0"}}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-10 23:52:23

它发生了变量usr没有解析到data中的现有密钥。取而代之的是这样做:

代码语言:javascript
复制
if usr not in data:
    data[usr] = {}
data[usr]['Points'] = "0"
票数 1
EN

Stack Overflow用户

发布于 2015-11-11 00:28:34

一种比@Raunak略简洁的形式是:

代码语言:javascript
复制
data.setdefault (usr, {}) ['Points'] = "0"

这将将data[usr]设置为空的dict (如果它尚未出现),并在任何情况下设置'Points'元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33641844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档