0

FQL クエリから返される次のものがあります。

posts_fql = graph.fql({'posts':"SELECT uid, name, pic, username FROM user WHERE is_app_user=1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"})     
print ast.literal_eval(json.dumps(posts_fql))


    [
  {
    'fql_result_set': [
      {
        'username': 'sahithi.akasapu',
        'pic': 'http://profile.ak.fbcdn.net/hprofile-ak-ash3/173521_1033451070_925702476_s.jpg',
        'uid': 1033451070,
        'name': 'Sahithi Akasapu'
      },
      {
        'username': 'joe.kaster.73',
        'pic': 'http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yh/r/C5yt7Cqf3zU.jpg',
        'uid': 100004855536430,
        'name': 'Joe Kaster'
      }
    ],
    'name': 'posts'
  }
]

私はそれを使用してPythonでリストを作成しようとしています:

user_list= []
for user in posts_fql:
    uid = user['fql_result_set'][0]['uid']
    username = user['fql_result_set'][0]['username']
    name = user['fql_result_set'][0]['name']
    pic = user['fql_result_set'][0]['pic']
    user_list.append([uid, username, name, pic])

user_list を印刷すると、最初のデータ セット (ユーザー 'test' 用) のみが印刷されます。どうすればこれを修正できますか?

4

1 に答える 1

1

データ構造が間違っているからです。fql_result_setユーザーリスト外です。それは行く:

posts_fql = [{ 'fql_result_set' : [{user_dict1}, {user_dict2}] }]

したがって、実際に必要なのは次のとおりです。

user_list= []
for user in posts_fql[0]['fql_result_set']:
    uid = user['uid']
    username = user['username']
    name = user['name']
    pic = user['pic']
    user_list.append([uid, username, name, pic])
于 2012-12-19T21:57:57.647 に答える