print user_dic[id]
은 올바른 결과 PersonA
을 표시합니다. 이것은 ID를 수동으로 입력 할 때입니다. 그러나Django에서 KeyError를 수정하는 방법은 무엇입니까?
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
, 내가 JSON을 반복 내가 오류를 얻을 for 루프를 통해 user_id
을 넣어보십시오 KeyError at 17800013
라인 name = user_dic[user_id]
합니다. 나는 왜 수동으로 ID를 입력 할 때 user_dic[id]
이 작동하는지 이해하지 못하지만, 입력이 같더라도 for 루프를 통과 할 때는 user_dic[user_id]
이 작동하지 않습니다.
#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'과 동일하지 않습니다 수 있음이 경우 반환하는 대신
None
당신의 값을 지정할 수 있습니다? 'user_dic' 그리고 나서'actor_id'를 인쇄 해보고 그것을 수동으로 확인하십시오. –print_id를 넣으면 17800013이 나옵니다. 이것은 코드의 첫 부분에서 수동으로 입력 한 것입니다. 그게 당신이 묻고 있던거야? – sharataka
내 대답을 확인하십시오. 업데이트했습니다. –