【发布时间】:2012-12-01 18:31:19
【问题描述】:
print user_dic[id] 显示正确的结果PersonA。这是我手动输入 id 的时候。
user_stream = {u'2331449': u'PersonB', u'17800013': u'PersonA'}
user_dic= {}
for item in user_stream:
user_dic[item['id']] = item['name']
id = '17800013'
print user_dic[id] #returns the right value
但是,当我尝试将 user_id 放入遍历 json 的 for 循环中时,我得到一个错误:KeyError at 17800013 用于行 name = user_dic[user_id]。我不明白为什么 user_dic[id] 在手动输入 id 时有效,但 user_dic[user_id] 在通过 for 循环时不起作用,即使输入相同。
#right fql query
fql_query = "SELECT created_time, post_id, actor_id, type, updated_time, attachment FROM stream WHERE post_id in (select post_id from stream where ('video') in attachment AND source_id IN ( SELECT uid2 FROM friend WHERE uid1=me()) limit 100)"
fql_var = "https://api.facebook.com/method/fql.query?access_token=" + token['access_token'] + "&query=" + fql_query + "&format=json"
data = urllib.urlopen(fql_var)
fb_stream = json.loads(data.read())
fb_feed = []
for post in fb_stream:
user_id = post["actor_id"]
name = user_dic[user_id] #this is the line giving me trouble
title = post["attachment"]["name"]
link = post["attachment"]["href"]
video_id = link[link.find('v=')+2 : link.find('v=')+13]
fb_feed.append([user_id, name, title, video_id])
【问题讨论】:
-
可能
actor_id与user_id不同?尝试打印user_dic然后actor_id并手动检查是否存在 -
当我输入 print user_id 时,我得到 17800013,这是我在代码的第一部分手动输入的。你问的是这个吗?
-
检查我的答案我已经更新了
标签: python django view dictionary