什么 python 数据结构可以轻松地动态添加新变量?
What python data structure can easily add new variables on the fly?
我正在尝试在固定项目列表上迭代捕获数据,但数据 fields/attributes 一开始并不固定。当我遍历每个项目时,可能会出现需要添加到数据库中的新属性。这样做的好方法是什么?
举个简单的例子,假设列表有三个项目(人),这些是他们的属性:
- 第 1 个人:身高=168cm,眼睛=棕色
- 人物2:身高=155cm,职业=教师
- 第 3 个人:年龄=43,国家/地区=西班牙,职业=作家
对于第 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
使用这些,您将能够访问每个人的元素。
我正在尝试在固定项目列表上迭代捕获数据,但数据 fields/attributes 一开始并不固定。当我遍历每个项目时,可能会出现需要添加到数据库中的新属性。这样做的好方法是什么?
举个简单的例子,假设列表有三个项目(人),这些是他们的属性:
- 第 1 个人:身高=168cm,眼睛=棕色
- 人物2:身高=155cm,职业=教师
- 第 3 个人:年龄=43,国家/地区=西班牙,职业=作家
对于第 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
使用这些,您将能够访问每个人的元素。