用python检查数组中是否存在值,如果不存在则追加

用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

我从一个txt文件中抓取,并添加到一个数组中。我已经为1编写了一个for循环。从txt文件中获取一个条目,2。检查结果数组中是否存在,如果不是3。将其添加到结果数组中

data.txt如下所示:

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,那么现在正是学习其调试功能的好时机,例如设置断点和检查值。或者你可以花一点时间熟悉内置的。此外,在程序的关键点打印内容可以帮助您跟踪正在发生或未发生的事情。