用python检查数组中是否存在值,如果不存在则追加
我从一个txt文件中抓取,并添加到一个数组中。我已经为1编写了一个for循环。从txt文件中获取一个条目,2。检查结果数组中是否存在,如果不是3。将其添加到结果数组中 data.txt如下所示:用python检查数组中是否存在值,如果不存在则追加,python,arrays,json,for-loop,txt,Python,Arrays,Json,For Loop,Txt,我从一个txt文件中抓取,并添加到一个数组中。我已经为1编写了一个for循环。从txt文件中获取一个条目,2。检查结果数组中是否存在,如果不是3。将其添加到结果数组中 data.txt如下所示: 0100002159900000000000 Sales Deval Patrick Seattle 0100003159900000000000 Sales Bernie Sanders
0100002159900000000000 Sales Deval Patrick Seattle
0100003159900000000000 Sales Bernie Sanders Chicago
0100004159900000000000 Sales Joseph R. Biden Dallas
0100005159900000000000 Marketing Michael R. Bloomberg Boston
...etc.
employees = [
{
"dept": "Sales",
"remote": False,
"management": [
{
"manager": "Smith",
"level": "county",
"people": [
{
"first_name": "Deval",
"middle_name": "",
"last_name": "Patrick",
"city": Seattle,
},
{
"first_name": "Bernie",
"middle_name": "",
"last_name": "Sanders",
"city": Chicago,
},
{
"first_name": "Joseph",
"middle_name": "R",
"last_name": "Biden",
"city": Dallas,
},
]
},
]
},
{
"dept": "Marketing",
"remote": True,
"management": [
{
"manager": "Jones",
"level": "county",
"people": [
{
"first_name": "Michael",
"middle_name": "R",
"last_name": "Bloomberg",
"city": Boston,
}
]
},
...etc.
]
}
]
结果数组应如下所示:
0100002159900000000000 Sales Deval Patrick Seattle
0100003159900000000000 Sales Bernie Sanders Chicago
0100004159900000000000 Sales Joseph R. Biden Dallas
0100005159900000000000 Marketing Michael R. Bloomberg Boston
...etc.
employees = [
{
"dept": "Sales",
"remote": False,
"management": [
{
"manager": "Smith",
"level": "county",
"people": [
{
"first_name": "Deval",
"middle_name": "",
"last_name": "Patrick",
"city": Seattle,
},
{
"first_name": "Bernie",
"middle_name": "",
"last_name": "Sanders",
"city": Chicago,
},
{
"first_name": "Joseph",
"middle_name": "R",
"last_name": "Biden",
"city": Dallas,
},
]
},
]
},
{
"dept": "Marketing",
"remote": True,
"management": [
{
"manager": "Jones",
"level": "county",
"people": [
{
"first_name": "Michael",
"middle_name": "R",
"last_name": "Bloomberg",
"city": Boston,
}
]
},
...etc.
]
}
]
我正在努力解决“如果数组中没有这个,请添加它”的if逻辑问题。下面是我现在得到的:
employees = []
with open('data.txt','r') as f:
for row in data:
# splits row by an instance of two or more characters of white space
# https://stackoverflow.com/questions/48917121/split-on-more-than-one-space
row = re.split(r"\s{2,}", row)
empl_id = row[0]
empl_name = row[2]
empl_dept = row[1]
for item in employees:
current_dept = item['dept']
if empl_dept != current_dept:
# create/append dept object:
dept_obj = {
"dept": "Sales",
"remote": False,
"management": [
{
"manager": "Smith",
"level": "county",
"people": []
}
]
}
employees.append(dept_obj)
else: # if dept_object does exist
#add people object:
employees[current_dept]['management']['people'].append({
"empl_name": empl_name,
"empl_id": empl_id
})
我知道这个逻辑,可能有些语法是错误的。我当前的主要问题是,它为employees数组中的每个项目都添加了一个dept_obj,它显然越来越大。我肯定有更好的方法写这个,我只是不知道它是什么。非常感谢您的帮助。可能需要查看collections.defaultdict。我发现它对于这种“创建/附加”的情况很有用。真正的问题是,当您需要一个部门时,您如何知道如何定义新的部门?如果您现在使用IDE,那么现在正是学习其调试功能的好时机,例如设置断点和检查值。或者你可以花一点时间熟悉内置的。此外,在程序的关键点打印内容可以帮助您跟踪正在发生或未发生的事情。