【问题标题】:Python - How to print a name from a list corresponding to a list of numbers in Python 3.xPython - 如何从与 Python 3.x 中的数字列表对应的列表中打印名称
【发布时间】:2020-08-06 12:31:42
【问题描述】:

我想知道如何打印与列表中的多个值对应的名称 例如: 我有一个行列表:

[['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

我想要的是:最后,我的代码将输出“Alice”导致列表中与 Alice 对应的值

现在它会打印 'yessir' 作为名称的占位符

注意:a,b,c 是为澄清而添加的 cmets

我的代码:

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")

【问题讨论】:

    标签: python python-3.x list csv


    【解决方案1】:

    如果你压缩你的列表结构,代码会变得更短。

    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
    

    【讨论】:

    • 请更新问题并添加正确的输入数据
    • 其实没关系,但是如果我有一个像这样的列表 numberx = [2,4,3] 而不是 a = 2 b = 4 c = 3 怎么办?我厌倦了用 numberx 替换 [a,b,c] 并且失败了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多