Python 如何循环遍历两个列表并附加键、val对?
我尝试在文本文件中进行两次循环,并创建一个dict,其中包含Python 如何循环遍历两个列表并附加键、val对?,python,loops,dictionary,Python,Loops,Dictionary,我尝试在文本文件中进行两次循环,并创建一个dict,其中包含dict[line\u index]=word\u index\u position,这意味着键是行号,值是该行中的所有单词。目标是创建一个“矩阵”,以便用户以后能够指定x、y坐标(直线、单词索引位置)并检索这些坐标中的单词(如果有)(不确定如何使用dict,因为它没有排序)。下面是创建dict的循环 try: f = open("file.txt", "r") except Exception as e: print(
dict[line\u index]=word\u index\u position
,这意味着键是行号,值是该行中的所有单词。目标是创建一个“矩阵”,以便用户以后能够指定x、y坐标(直线、单词索引位置)并检索这些坐标中的单词(如果有)(不确定如何使用dict,因为它没有排序)。下面是创建dict的循环
try:
f = open("file.txt", "r")
except Exception as e:
print("Skriv in ett korrekt filnamn")
uppslag = dict()
num_lines = 0
for line in f.readlines():
num_lines += 1
print(line)
for word in line.split():
print(num_lines)
print(word)
uppslag[num_lines] = word
f.close()
uppslag
循环按预期工作,但是upplagk[num_lines]=word
似乎只存储每行中的最后一个单词。任何指导都将不胜感激
非常感谢,
upplagk[num\u lines]=word
每次调用时都会覆盖关键字num\u lines
的词典条目。您可以使用列表保存所有单词:
for line in f:
num_lines += 1
print(line)
uppslag[num_lines] = [] # initialize dictionary entry with empty list
for word in line.split():
print(num_lines, word)
uppslag[num_lines].append(word) # add new word to list
您可以以更紧凑的形式编写相同的代码,因为line.split()
已经返回了一个列表:
for line_number, line in enumerate(f):
uppslag[line_number] = line.split()
如果每行都有一个单词(即行索引将是连续的),您可以使用列表而不是字典,并将代码简化为一行列表:
uppslag = [line.split() for line in f]
而不是覆盖
单词
:
for word in line.split():
print(num_lines)
print(word)
uppslag[num_lines] = word
您最好保存整条线路:
uppslag[num_lines] = line.split()
这样,您就可以在第4行中找到第3个单词:
uppslag[4][3]
不需要字典或
.readlines()
打开(“file.txt”)作为单词\u文件:
words=[line.split()表示words\u文件中的行]
当您已经知道行号是连续序列时,为什么还要使用dict
?只需使用2d列表即可。您应该真正使用上下文管理器来处理该文件对象。您可以直接迭代文件对象,无需使用.readlines()
@AjayDabas是正确的,特别是因为您编写的目标是创建一个“矩阵”,以便用户以后能够指定x、y坐标(直线、单词索引位置)并检索这些坐标中的单词,如果有any@AMC原因是因为特定的练习指定了dict的使用,我非常感谢AjayDabas的建议,我同意这是一个更好的解决方案!这真是太好了,感谢您花时间提供这个解决方案,并展示了如何对dict进行索引。非常感谢!对于这个练习来说,这几乎是紧凑的,必须说我真的印象深刻。感谢您花时间展示如何做到这一点!谢谢你指出这一点,我相应地编辑了我的答案。