【问题标题】:How to find the name that corresponds to a list of numbers?如何找到与数字列表对应的名称?
【发布时间】:2020-08-06 19:17:03
【问题描述】:

我有一个这样的数据列表:

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

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

[4, 1, 5]

我想把这个(key)和数据列表进行比较 如果找到,在上面的示例中为真,那么它将打印相应的名称(即 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)

在我的代码案例中,(键)是numberx,数据列表是data

【问题讨论】:

    标签: python python-3.x list compare


    【解决方案1】:

    您可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多