我正在用python编写代码。 我的输入行是“all/DT remaining/VBG all/NNS of/IN”
我想创建一个具有一个键和多个值的字典 例如-all:[DT,NNS]
groupPairsByKey={}
Code:
for line in fileIn:
lineLength=len(line)
words=line[0:lineLength-1].split(' ')
for word in words:
wordPair=word.split('/')
if wordPair[0] in groupPairsByKey:
groupPairsByKey[wordPair[0]].append(wordPair[1])
<getting error here>
else:
groupPairsByKey[wordPair[0]] = [wordPair[1]]
虽然在我看来你应该得到一个缩进错误,如果你得到消息
那就意味着
是一个
str
,并且str
s没有append方法。你发布的代码没有显示
可能有一个
str
值。也许是在你的代码中帮助追查罪犯。
您还可以使用collections.defaultdict来简化代码:
当使用缺少的键访问
defaultdict
时,将调用工厂函数(在本例中为list
),并将返回值用作defaultdict
中的关联值。因此,每当遇到丢失的密钥时,新的密钥-值对就会自动插入defaultdict
。因为默认值总是一个列表,所以不会遇到错误str object has no attribute append
不再——除非你 重新分配旧键值对以获得新值(astr
)的代码。你可以:
my_dict["all"] = my_string.split('/')
在Python中
你的问题是
groupPairsByKey[wordPair[0]]
不是一个列表,而是一个字符串!在将值附加到
groupPairsByKey['all']
之前,需要将该值设置为列表。你的解决方案已经是正确的,在我的情况下是完美的。请确保
groupPairsByKey
是一个完全空的字典。顺便说一句,我就是这么想的:
另外,如果您的代码的格式与您在这里发布的代码的格式相同,您将得到一个indentationError。
希望这有帮助!
相关问题 更多 >
编程相关推荐