文件包含以下字符串:
I have no pride
I have no shame
You gotta make it rain
Make it rain rain rain
输出应如下所示:
{'rain': [2, 3], 'gotta': [2], 'make': [2], 'it': [2, 3], 'shame': [1], 'I': [0, 1], 'You': [2], 'have': [0, 1], 'no': [0, 1], 'Make': [3], 'pride': [0]}
但我明白了:
{'I': 1, 'have': 1, 'gotta': 2, 'Make': 3, 'it': 3, 'rain': 3, 'You':
2, 'no': 1, 'make': 2, 'shame': 1, 'pride': 0}
我的代码:
def lineIndex(fName):
fileName=open(fName)
contents=fileName.readlines()
fileName.close()
d={}
lst=[]
count=-1
for line in contents:
if line not in lst:
print(line)
lst.append(line)
count+=1
t=line.split()
y2=[]
for eachWord in t:
#print(eachWord)
if eachWord not in d:
y2.append(eachWord)
d[eachWord]=count
if eachWord in d:
d[eachWord]=count
return d
问题在于:
您不断地将每个键的值重置为最新的行号。相反,请尝试使用
collections.defaultdict
使每个值在默认情况下以列表开头,并枚举行以获取计数:这应该适合您:
输出:
没有任何导入模块的替代解决方案:
结果如下:
不带枚举的备选方案:
相关问题 更多 >
编程相关推荐