检查嵌套列表中是否有2个值,并打印lis的值

2024-05-18 18:57:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我要一个识别号,例如(6373383-D)和一个pin。 我有这样一个嵌套列表:

cliente = [[0, "Carlos", "Perez Rodriguez", "123342344-D", 4, "ES6621000418401234567891", 1234, 3000, "No"], 
[1, "Ana", "Martin Perez", "19786444-E", 7, "ES6000491500051234567892", 6789, 8000, "No"], 
[2, "Maria", "Sanchez Agudo", "67893456-A", 2, "ES9420805801101234567891", 1111, 10000, "No"], 
[3, "Paco", "Sainz Sanchez", "56782341-B", 2, "ES9000246912501234567891", 9876, 2345, "No"],
[4, "Marcos", "Calvo Rodriguez", "56783452-D", 9, "ES7100302053091234567895", 3456, 8000, "No"]]

例如,如果他把123342344-D和1234放在PIN中,我必须显示该列表的值。你知道吗

我的代码是:

    #coding=utf-8
cliente=[["Carlos", "Perez Rodriguez", "123342344-D", 4, "ES6621000418401234567891", 1234, 3000, "No"], ["Ana", "Martin Perez", "19786444-E", 7, "ES6000491500051234567892", 6789, 8000, "No"], ["Maria", "Sanchez Agudo", "67893456-A", 2, "ES9420805801101234567891", 1111, 10000, "No"], ["Paco", "Sainz Sanchez", "56782341-B", 2, "ES9000246912501234567891", 9876, 2345, "No"], ["Marcos", "Calvo Rodriguez", "56783452-D", 9, "ES7100302053091234567895", 3456, 8000, "No"] ]
def clientes(): 
    respuesta=True
    while respuesta:
        print ("Ha elegido la opcion clientes, por favor, identifiquese usando DNI y PIN: ")
        dni = input("DNI: ")
        pin = int(input("PIN: "))
        if dni in (dni[2] for dni in cliente):
            if pin in (pin[5] for pin in cliente):
                for r in cliente:
                    if dni == cliente[r][3] and pin == cliente[r][6]:
                        print("*-----------------------------------------------------------------*\n")
                        print("\nNombre: "+ cliente[r][0])
                        print("\nApellidos: "+ cliente[r][1])
                        print("\nDNI: "+ cliente[r][2])
                        print("\nAntiguedad: "+ cliente[r][3])
                        print("\nCuenta IBAN: "+ cliente[r][4])
                        print("\nPIN: "+ cliente[r][5])
                        print("\nBalance: "+ cliente[r][6])
                        print("\nTiene oferta: "+ cliente[r][7])
                        print("\n*-----------------------------------------------------------------*")
        else:
            print("El cliente no está en la lista")

我想要类似的东西,我们从来没有使用动态的,我是不允许的


Tags: noin列表forifpinprintcarlos
3条回答

可以编写动态过滤函数:

filter_func = lambda id,pin: lambda row: (row[3]==id) and (row[6]==pin )
list(filter(filter_func("123342344-D", 1234), cliente))

结果:

[[0, 'Carlos', 'Perez Rodriguez', '123342344-D', 4, 'ES6621000418401234567891', 1234, 3000, 'No']]

考虑到cliente的任何子列表的第四项将包含标识号,而子列表的第七项包含pin,您可以这样打印包含这些项的子列表:

print([k for k in cliente if (k[3]=='123342344-D' and k[6] == 1234)])

或者,如果子列表没有排序,请尝试:

print([k for k in cliente if ('123342344-D' in k and 1234 in k)])

你可以做:

res = [i for i in cliente if i[3]=='123342344-D' and i[6] == 1234]
print(repr(res[0]) if len(res) else 'Not found')

相关问题 更多 >

    热门问题