无法在python中遍历dict列表

2024-03-29 05:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的口述如下:

{   u'has_more': False,
    u'is_limited': True,
    u'latest': u'1501149118.071555',
    u'messages': [   {   u'text': u'--Sharp 1.9 DM\n--Modifying and testing DM script for bypassing existing sonumber validation and add line items',
                         u'ts': u'1501149054.047400',
                         u'type': u'message',
                         u'user': u'U0HN06ZB9'},
                     {   u'text': u'-- support to engineering on Licensing infra upgrade to 3.6\n   - created a new key for qa on current 3.5 ubuntu 12 instance\n   - added that key to the instance , created the ami and shared it with QA\n   - short discussion with Navin on same',
                         u'ts': u'1501148934.002719',
                         u'type': u'message',
                         u'user': u'U02RRQJG1'},
                     {   u'inviter': u'U03FE3Z7D',
                         u'subtype': u'channel_join',
                         u'text': u'<@U0HN06ZB9|shikhar.rastogi> has joined the channel',
                         u'ts': u'1501148921.998107',
                         u'type': u'message',
                         u'user': u'U0HN06ZB9'},
                     {   u'inviter': u'U03FE3Z7D',
                         u'subtype': u'channel_join',
                         u'text': u'<@U02RRQJG1|himani> has joined the channel',
                         u'ts': u'1501148328.777625',
                         u'type': u'message',
                         u'user': u'U02RRQJG1'},
                     {   u'text': u'something like ^^^^',
                         u'ts': u'1501148318.773838',
                         u'type': u'message',
                         u'user': u'U03FE3Z7D'},
                     {   u'text': u'-- This is test \n-- Not\n-- test1\n-- Test b',
                         u'ts': u'1501148309.770614',
                         u'type': u'message',
                         u'user': u'U03FE3Z7D'},
                     {   u'text': u'<!channel>  can all of you start putting some random crap in same format as shift handoff',
                         u'ts': u'1501148287.762336',
                         u'type': u'message',
                         u'user': u'U03FE3Z7D'},
                     {   u'text': u'<!channel>  can all of you start putting some random crap in same format as shift handoff',
                         u'ts': u'1501148287.762161',
                         u'type': u'message',
                         u'user': u'U03FE3Z7D'},
                     {   u'text': u'sjvnsv',
                         u'ts': u'1501138569.469475',
                         u'type': u'message',
                         u'user': u'U03FE3Z7D'},
                     {   u'text': u'-- Test1 \n-- Leave this ASAP',
                         u'ts': u'1501136157.933720',
                         u'type': u'message',
                         u'user': u'U03FE3Z7D'},
                     {   u'bot_id': u'B19LZG1A5',
                         u'subtype': u'bot_message',
                         u'text': u'This is crazy',
                         u'ts': u'1501075281.418010',
                         u'type': u'message',
                         u'username': u'TEST_BOT'}],
    u'ok': True,
    u'oldest': u'1500820472.964970'}

现在我尝试提取两个东西,第一个是user和它对应的text,但不知怎么的,我无法使用以下方法得到:

json_objects = json.loads(r.text)
for i in json_objects:
    print json_objects['messages'][i]['user']
    print json_objects['messages'][i]['text']

上面抛出一个错误:

Traceback (most recent call last):
  File "clean_test.py", line 45, in <module>
    get_channel_messages()
  File "clean_test.py", line 38, in get_channel_messages
    print json_objects['messages'][i]['user']
TypeError: list indices must be integers, not unicode

上面的内容实际上应该得到user,并调用一个用户\u detail()meathod来获取名称并返回,完成后,我希望内容以以下方式转储到一个文件中

username1:
    -- text
username2:
    -- text2

Tags: andthetextinjsonmessageobjectsis
2条回答

您希望迭代列表的索引,而不是迭代外部dict的键

json_objects = json.loads(r.text)
for i in range(len(json_objects['messages'])):
    print json_objects['messages'][i]['user']
    print json_objects['messages'][i]['text']

或者另一种方式是(Python式):

for i in json_objects['messages']:
   print i['user']
   print i['text']

您正在使用字典进行迭代并尝试访问列表。试试这个

for i in json_objects['messages']:
    print i['user']
    print i['text']

相关问题 更多 >