在循环内将项添加到Dictionary

Kay*_*Kay 2 python dictionary

以下数据来自网页并包含如下条目(如包含多行的表格):

entry1: key1: value1-1, key2: value2-1, key3: value3-1
entry2: key1: value1-2, key2: value2-2, key3: value3-2
entry3: key1: value3-1, key2: value2-3, key3: value3-3
......
entry100: key1: value100-1, key2: value100-2, key3: value100-3
Run Code Online (Sandbox Code Playgroud)

如何使用字典存储这些数据?数据来自列表,因此'字典附加'应该在循环中完成...

这是我目前的解决方案:

case_list = {}
for entry in entries_list:
    case = {'key1': value, 'key2': value, 'key3':value }
    case_list.update(case)
Run Code Online (Sandbox Code Playgroud)

但最终case_list只包含最后一个案例条目...有人可以帮我这个吗?我希望case_list包含100个条目,没有条目之间的任何覆盖,然后我需要将它存储到DB.

Ana*_*mar 18

在您当前的代码中,Dictionary.update()它更新的内容是什么(更新意味着该值是从传入字典中的相同键的值覆盖)当前字典中的键,其中字典中的值作为参数传入其中(添加任何新密钥:值对(如果存在).单个平面字典不满足您的要求,您需要一个字典列表或一个嵌套字典的字典.

如果你想要一个字典列表(列表中的每个元素都是一个条目的双子组),那么你可以将它case_list作为一个列表然后附加case到它(而不是更新).

示例 -

case_list = []
for entry in entries_list:
    case = {'key1': entry[0], 'key2': entry[1], 'key3':entry[2] }
    case_list.append(case)
Run Code Online (Sandbox Code Playgroud)

或者你也可以有一个词典字典,其中字典中的每个元素的键是entry1entry2等,并且值是该条目的相应字典.

case_list = {}
for entry in entries_list:
    case = {'key1': value, 'key2': value, 'key3':value }
    case_list[entryname] = case  #you will need to come up with the logic to get the entryname.
Run Code Online (Sandbox Code Playgroud)


Dee*_*hah 7

根据我的理解,您需要字典中的数据,如下所示:

key1: value1-1,value1-2,value1-3....value100-1
key2: value2-1,value2-2,value2-3....value100-2
key3: value3-1,value3-2,value3-2....value100-3
Run Code Online (Sandbox Code Playgroud)

为此,您可以为每个字典键使用列表:

case_list = {}
for entry in entries_list:
    if key in case_list:
        case_list[key1].append(value)
    else:
        case_list[key1] = [value]
Run Code Online (Sandbox Code Playgroud)