如何在列表中添加字典

时间:2020-06-24 10:04:26

标签: python list dictionary

我想连接聊天中分开的消息,所以我为所有词典创建了一个列表

messages = ["Hello", "How you doing","fine","how can I help you", "how to do this?", "like this", "thanks","man","no problem"]
Person1= [True,True,False,False,True,False,True,True,False]

data =[]

chat_messages = messages
people = Person1
k = 0

for i in range(len(messages)):
    if people[i] == people[i+1]:
        chat_messages[i+1] = chat_messages[i] +" " +chat_messages[i+1]
        chatData  = {'text': chat_messages[i+1], 'person1': people[i]}
        data[k] = chatData 
    else:
        k +=1
        chatData = {'text': chat_messages[i+1], 'person1': people[i+1]}
        print(chatData )
        data[k] = chatData 
       
print(data)

我在这里遇到错误

  File "main.py", line 20, in <module>                                                                                                                                                                                                          
    data[k] = chatData  
IndexError: list assignment index out of range 

我该如何解决? 我希望数据输出看起来像这样:

data = [{'text': 'Hello How you doing', 'person1': True} , {'text': 'fine how can I help you', 'person1': False}, {'text': 'how to do this?', 'person1': True}]

3 个答案:

答案 0 :(得分:0)

您不能以这种方式将元素添加到python中的列表中。您必须使用python方法append()。

data.append(chatData)

此方法将在列表的末尾添加元素。 您可以使用此链接了解更多python列表方法 https://www.geeksforgeeks.org/list-methods-python/

答案 1 :(得分:0)

问题在于,当您添加索引i + 1时,到达nr 9时会出现错误,因为列表索引在8处停止。这是我的解决方案:

messages = ["Hello", "How you doing","fine","how can I help you", "how to do this?", "like this", "thanks","man","no problem"]
Person1= [True,True,False,False,True,False,True,True,False]

data =[]

chat_messages = messages
people = Person1
k = 0
data = []
for i, msg in enumerate(messages):
    try: 
        if people[i] == people[i+1]:
            chat_messages[i+1] = chat_messages[i] +" " +chat_messages[i+1]
            data.append({'text': chat_messages[i+1], 'person1': people[i]})
    except: 
        pass
print(data)

答案 2 :(得分:0)

messages = ["Hello", "How you doing","fine","how can I help you", "how to do this?", "like this", "thanks","man","no problem"]
Person1= [True,True,False,False,True,False,True,True,False]

data =[]

chat_messages = messages
people = Person1
k = 0

for i in range(len(messages)):
    if len(messages)-1 is i:
        None
    else:
        if people[i] == people[i+1]:
            chat_messages[i+1] = chat_messages[i] +" " +chat_messages[i+1]
            chatData  = {'text': chat_messages[i+1], 'person1': people[i]}
            data.append(chatData)
        else:
            chatData = {'text': chat_messages[i+1], 'person1': people[i+1]}
            print(chatData )
            data.append(chatData)

       
print(data)