python - 在循环内将项目添加到字典

标签 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

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

这是我目前的解决方案:

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

但最后的 case_list 只包含最后一个案例条目...有人可以帮我解决这个问题吗? 我希望 case_list 包含 100 个条目,条目之间没有任何覆盖,之后我需要将它存储到数据库中。

最佳答案

在您当前的代码中,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)

或者你也可以有一个字典的字典,字典中每个元素的键是 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.

关于python - 在循环内将项目添加到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181830/

相关文章:

python - 使用 conda-forge 作为 Anaconda 的默认 channel 在 Mac Pro M1 上安装软件包

python - 子集 pandas 数据框直到第一次满足条件时

python - pytest支持验证吗?

python - 使用类函数更新字典

python - 将多个数据文件组合成np.arrays,存储在字典中

python - 使用 Python 编辑和重新保存文件

python - 使用map求嵌套列表的平均值

c++ - 返回模板映射值作为引用

python - 在 Python 中构建多维字典时出现 KeyError

python - 如何使这个词典理解更具可读性