什么 python 数据结构可以轻松地动态添加新变量?

What python data structure can easily add new variables on the fly?

我正在尝试在固定项目列表上迭代捕获数据,但数据 fields/attributes 一开始并不固定。当我遍历每个项目时,可能会出现需要添加到数据库中的新属性。这样做的好方法是什么?

举个简单的例子,假设列表有三个项目(人),这些是他们的属性:

对于第 1 个人,需要捕获两个变量:身高和眼睛颜色。在 Person 2 的下一次迭代中,有一个现有属性(身高)和一个新属性(职业)。人物 3 有三个新属性需要添加。

项目列表当前存储在 pandas 数据框中。到目前为止,我唯一的想法是创建一个字段,将所有属性存储在每个人的单个字典项中(例如

[
    {"Height": "168cm", "Eyes": "Brown"},
    {"Height": "155cm, "Occupation": "Teacher"},
    {"Age": "43", "Country": "Spain", "Occupation": "Writer"}
] 

有没有更好的方法来存储数据,以便以后更容易查询?我是 python 的新手。谢谢!

尝试使用 multi-dimensional 词典。这些格式为

dict2d = {
"Person1":{"Height": "168cm", "Eyes": "Brown"}
"Person2":{"Height": "155cm", "Occupation": "Teacher"}
"Person3":{"Age": "43", "Country": "Spain", "Occupation": "Writer"}
}

所以在你的代码中,当你遇到一个新元素时,你可以 运行 类似于

# code following the encounter
if person_name in dict2d:
  dict2d[person_name[new_data_name]] = new_data_value
else:
  dict2d[person_name] = {new_data_name : new_data_value}
# this is general pseudocode, there may be a few syntax errors

使用这些,您将能够访问每个人的元素。