Python列表字符串比较不起作用

时间:2017-08-16 07:26:30

标签: python list

我正在尝试创建一个小型python程序,它采用名字和姓氏列表,以FirstInitial格式创建用户名。 LastName(区分相似名称的可选数字),例如P.Test16。然后,它将它们与现有用户名列表以及所有其他新生成的用户名进行比较,并通过增加最后的数字使它们都是唯一的。 然而,虽然它可以将新用户名与现有用户名进行比较,但它无法将它们与其他新用户名进行比较,例如我目前已经拥有一个用户名“j.moore”,而且我还有两个新用户,他们将拥有一个用户名j.moore ,因此在while循环中第一次运行后都有用户名“j.moore1”,但它不会在第二次运行中使第二个“j.moore2”。下面是我的代码

while len(intakearray) > 0:
    nonuniqueusers = []
    for row in intakearray:
        if (row[2] not in usersarray) and (row[2] not in uniqueusers):
            if count > 0:
                print(row)
            uniqueusers.append(row)
        else:
            nonuniqueusers.append(row)
            if args.verbose >= 1:
                conflicts += 1
                if args.verbose == 2:
                    conflictingnames.append(row[2])
    for row in nonuniqueusers:
        newname = row[2]
        if count >= 1:
            newname = row[2][0:-1]
        newname += str(count + 1)
        row[2] = newname
    intakearray = nonuniqueusers
    count += 1

1 个答案:

答案 0 :(得分:0)

如果用户是唯一的,您可以将NULL中的完整row存储在intakearray中(代码清单第7行):

uniqueusers

但是,当您检查用户名是否唯一时,请检查uniqueusers.append(row) 中的用户名是否在row[2]中(代码中的第4行):

uniqueusers

当您将第7行从if (row[2] not in usersarray) and (row[2] not in uniqueusers): 更改为uniqueusers.append(row)时,您的代码应按预期工作。

由于您的示例未对uniqueusers.append(row[2])的内容进行任何说明,因此您应检查在其中是否存在完整行与仅检查上述if语句中的用户名之间是否存在相同的不匹配。