搜索列表中的列表

时间:2016-04-29 18:28:02

标签: python list python-3.x

我想创建一个代码,可以将文件追加到列表中,剥离并拆分它,然后找到Payments.txt中与规则匹配的行,找到状态为“A”的客户“还有很多钱可以支付。我可以做前两个标准,可以部分做第三个标准。我可以找到有优秀金额的客户,但不能找到状态为“A”的客户。我必须使用列表,而不是字典。

这是我的代码:

myList = []
Status = "A"
myFile = open("Payments.txt")
record = myFile.readlines()
for line in record:
    myList.append(line.strip().split(','))
myFile.close()
for z in record:
    details = [[x for x in myList if x[0] == Status], [x for x in myList if x[2] > x[4]]]  #This is were I am having trouble
    if details:
        print(details)
        break

这就是结果:

[[], [['E1234', '12/09/14', '440', 'A', '0'], ['E3431', '10/01/12', '320', 'N', '120'], ['E5322', '05/04/02', '503', 'A', '320'], ['E9422', '26/11/16', '124', 'N', '0']]]

为什么我在结果开头得到一个空列表? Payments.txt中没有空行。

列表结构如下:

['Customer number', 'Date when they joined', 'Total amount', 'Status', 'Amount paid']

2 个答案:

答案 0 :(得分:2)

试试这个:

len(x) == 5

public modelObject:modelType = new Model({}); constructor(){ let self = this; Object.keys(this.modelObject).forEach(keyElement => { self.modelObject[keyElement] = "n/a"; }); } 中,5表示正常列表结构的长度。最好用变量替换它。

答案 1 :(得分:0)

试试这个:

details = [[x for x in myList if x[0] == Status and x[2] > x[4]]

我认为你之所以得到一个是因为你检查A或大于。