我正试图为我的Twitch建立一个积分系统,而且由于一些奇怪的原因,我在尝试新的条目时遇到了KeyErrors。这是我的代码:
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
我正在以这种格式将用户数据存储在文件中:
{"users": {"cupcake": {"Points": "0"}}}发布于 2015-11-10 23:52:23
它发生了变量usr没有解析到data中的现有密钥。取而代之的是这样做:
if usr not in data:
data[usr] = {}
data[usr]['Points'] = "0"发布于 2015-11-11 00:28:34
一种比@Raunak略简洁的形式是:
data.setdefault (usr, {}) ['Points'] = "0"这将将data[usr]设置为空的dict (如果它尚未出现),并在任何情况下设置'Points'元素。
https://stackoverflow.com/questions/33641844
复制相似问题