我有以下文字:
我想实现以下目标。
创建一个带有关键字 word1, ...(左侧的)的字典然后我想将 word1 与 word7 相关联,在这种情况下,与 word 11(并添加重复)相关联,所以
word1 = [word7, word11, word11]
我想对左侧的每个单词执行此操作,前提是它与之前已经计算的不同。
我尝试了以下方法,但不起作用:
from collections import defaultdict
inputfile = open("file.txt","r")
keys = []
key = ''
my_dict = defaultdict(list)
for line in inputfile:
l=line.split()
a= l[4].split("-")
b_temp = l[7].rstrip("\'")
b = b_temp.split("-")
for elem in range(len(a)):
if a not in keys:
keys.append(a)
key = a[elem]
my_dict[key].append(b[elem])
continue
for var in range(len(a)):
if a[var] == a[elem]:
my_dict[key].append(b[var])
我知道左边的字数等于右边的字数。
例如,我得到类似 defaultdict(, {'aaaa': ["'word7", 'word10']})
但我愿意
在这种情况下
word1 = [word7, word11, word11]
word2 = [word8, word7]
word3 = [word9]
word4= [word10]
我懂了。我相信你的逻辑很好,直到内部 for 循环(for elem in ...
)。解决的办法是简单:你不需要嵌套for循环,只需使用zip
函数中的每个元素进行配对a
(我称之为keys
)与相应的元素b
(我称之为values
):
from collections import defaultdict
inputfile = open("file.txt","r")
my_dict = defaultdict(list)
for line in inputfile:
line = line.split()
keys = line[4].split("-")
values = [v.strip("'") for v in line[7].split("-")]
for k, v in zip(keys, values):
my_dict[k].append(v)
for k, v in sorted(my_dict.items()):
print('{} = {}'.format(k, v))
输出:
word1 = ['word7', 'word11', 'word11']
word2 = ['word8', 'word7']
word3 = ['word9']
word4 = ['word10']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句