我在将值添加到字典中的值集合时遇到问题。我必须使用集合作为值,而不是列表或其他任何东西。我见过append-multiple-values-for-one-key-in-python-dictionary">this thread但它没有完全覆盖我。
from collections import defaultdict
datoteka = open("vzorec.list","rt")
slovar = defaultdict(set)
for vrstica in datoteka:
seznam = vrstica.split("\t")
naslov = seznam[0]
beseda = seznam[len(seznam)-1]
beseda = beseda.strip()
naslov2 = ""
for crka in naslov:
if crka == "(":
break
else:
naslov2 = naslov2 + crka
naslov = naslov2.lstrip('"')
if naslov not in slovar:
slovar[naslov] = set(beseda)
elif naslov in slovar:
slovar[naslov] = slovar[naslov].add(beseda)
print(slovar)
我得到一个错误,字符串类型没有add函数。但是为什么python不理解我希望将集合作为值。我甚至用了defaultdict
Python理解得很好:)。你的代码中有个错误。
set.add
对集合进行变异并返回None
,因此您已放弃集合并将键设置为None
。你只想做slovar[naslov].add(beseda)
不管naslov
是否在集合中,而不关心返回值。我不知道字符串是如何进入的,所以如果这不能解决你的问题,你需要粘贴一个完整的回溯。
你只想:
而不是:
这是因为使用
defaultdict
时,如果键不存在,它会将空集作为值添加到该特定键,并返回空集。因此,第一次,slovar[naslov]
返回一个空集,然后.add(beseda)
。相关问题 更多 >
编程相关推荐