Python - Как распечатать имя из списка, соответствующего списку чисел в Python 3.x - PullRequest
0 голосов
/ 06 августа 2020

Я хотел бы знать, как напечатать имя, соответствующее количеству значений в списке, например: у меня есть список со строками:

[['Alice', 'Bob', 'Charlie'], [a = 2, b = 4, c = 3], [a = 8, b = 1, c = 2], [a= 3, b = 5, c= 5]]

, и у меня есть оператор if в моем коде который проверяет, есть ли какое-то число в этом списке

, например:

пользовательские вводы: a = 2, затем b = 4, затем c = 3

Я хочу : в конце мой код выведет "Алиса", потому что те значения, которые соответствуют Алисе в списке

, сейчас он печатает 'yessir' в качестве заполнителя для имени

Примечание: a, b, c - комментарии, добавленные для пояснения

мой код:

from sys import argv, exit
import csv
import re
import pandas as pd

argc = len(argv)

if argc != 3:
    print("Invalid file(s)")
    exit(1)


file = open(argv[1] , "r")
file1 = open(argv[2] , "r")

text = file1.read()

strl = []
column = []

with file:

    csv = csv.reader(file,delimiter=",")

    for row in csv:
        strl = row[1:9]
        break

    df = pd.read_csv(argv[1])
    data_list = df.T.values.tolist()



for g in range(len(strl)):

    pattern = re.compile('(%s)'%strl[g])
    res = pattern.findall(text)
    repeats = len(res)
    intm = repeats


    pattern = re.compile('(%s)+'%strl[g])
    res = pattern.findall(text)
    repeats = len(res)
    intg=repeats - 1

    number = intm - intg
    if number in data_list[g+1]:
        continue
    else:
        print("No match")
        exit(1)

print("yessir")

1 Ответ

1 голос
/ 06 августа 2020

Если сжать структуру списка, код станет намного короче.

lst = [['Alice', 'Bob', 'Charlie'], [2, 4, 3], [8, 1, 2], [3, 5, 5]]

a=2; b=4; c=3; 

if [a,b,c] in lst:
    print(lst[0][lst.index([a,b,c])-1])   # Alice
else
    print("No Match")

Вывод

Alice
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...