我有一个三行文本文件,使用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
的列表):
([], [], [])
[]
答案 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”等。