Как найти имя, соответствующее списку номеров? - PullRequest
3 голосов
/ 06 августа 2020

У меня есть такой список данных:

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

и у меня есть список чисел (ключ):

[4, 1, 5]

Я хочу взять этот (ключ) и сравнить он соответствует списку данных, если он найден, что в приведенном выше примере истинно, тогда он напечатает соответствующее имя (это Боб), если он не найден, тогда он просто распечатает сообщение об ошибке

Как я могу это сделать?

мой код:

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 = []


with file:

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

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

    df = pd.read_csv(argv[1])
    data = df.loc[:, df.columns != 'name'].to_numpy().tolist()
    data.insert(0, df["name"].tolist())



numberx = []

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
    numberx.append(number)

в моем кодовом случае (ключ) - numberx, а список данных - data

1 Ответ

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

Вы можете использовать zip() для имени «t ie» в его списке, а затем выполнить простое == сравнение:

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

for name, lst in zip(data[0], data[1:]):
    if numberx == lst:
        print('List found! Name = {}'.format(name))
        break
else:
    print('Error!')

Печать:

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