将列表元素追加到另一个列表的函数,返回空列表/元组

时间:2018-11-14 17:44:01

标签: python list function tuples

我有一个三行文本文件,使用cleanedFileList将其分成名为function1()的列表列表:

  

你好,1

     再次

2

     

世界,3

在运行function1()之后,在打印时看起来像这样,这就是打印fileOutput得到的结果:

[[hello, 1], [again, 2], [world, 3]]

我实际上是在尝试创建一个function2(),它可以根据第二个位置的数字值将cleanedFileList中的单词附加到三个单独的列表中。例如,[hello,1]将作为'hello'附加到l1,因为它在cleanedFileList中的第二个位置带有值1。 ,由于值2,[again, 2]将作为'再次'附加到l2,位于第二位置

fileInput = open('keywords.txt', 'r')


l1 = []
l2 = []
l3 = []


def function1(file):
        cleanedFileList = []
        for line in file:
            cleanedFileList.append(line.strip().split(','))
        return cleanedFileList

fileOutput = function1(fileInput)    

def function2(file):
       for i in range(len(file)):
            if file[i][1] == 1:
                l1.append(file[i][0])
            if file[i][1] == 2:
                l2.append(file[i][0])
            if file[i][1] == 3:
                l3.append(file[i][0])
       return l1, l2, l3


listOutput = function2(fileOutput)
print(listOutput)
print(l1)

但是,当我运行上述代码时,我得到一个空元组(来自function2()中的return语句和一个空列表(源自尝试打印l1的列表):

([], [], [])
[]

2 个答案:

答案 0 :(得分:0)

将元素存储到字典中比动态创建列表更好。

from collections import defaultdict

lst = [['hello', '1'], ['again', '2'], ['world', '3'], ['good', '1'], ['morning', '3']]

d = defaultdict(list)

for x in lst:
    d[x[1]].append(x[0])

print(d)
# defaultdict(<class 'list'>, {'1': ['hello', 'good'], '2': ['again'], '3': ['world', 'morning']})

现在,您可以以1的身份访问所有d['1']个元素,以2的身份访问所有d['2']个元素,依此类推...

例如:

>>> d['1']
['hello', 'good']

答案 1 :(得分:0)

似乎,fileOutput中有字符串,而不是整数。因此,“ 1”!= 1。 而且您还可以在字符串中看到空格:“ 1”,“ 2”等。