如何找到与一列数字对应的名称?

3
我有一个数据列表如下:
[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

我有一个数字列表(键):

[4, 1, 5]

我希望取出这个(key),并将其与数据列表进行比较,如果找到了,在上面的例子中是true,那么它将打印出相应的名称(即Bob)。

如果没有找到,则只需打印错误消息。

我该怎么做呢?

我的代码:

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)

在我的代码案例中,(key) 是numberx,数据列表是data
1个回答

6
你可以使用 zip() 把名称和它的列表联系起来,然后进行简单的 == 比较:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接