使用附加词典

时间:2013-07-12 23:44:56

标签: python unicode dictionary append

我一直想弄清楚我做错了什么。

我从Excel - Ones中提取单元格,子项目和要求。

如果dict中已存在类别和子项

ldict

我想追加它。我目前正在这样做:

ldict[(cat, sub)].append(req)

其中cat,sub和req是Excel中转​​换为字符串的unicode值:

req = unicodedata.normalize('NFKD', sh.Cells(a,i).Value).encode('ascii','ignore')

但是,我一直收到这个错误:

Traceback (most recent call last):
File "C:\Users\jenhuang\My Documents\dude\comparestrings.py", line 35, in <module>
ldict[(cat, sub)].append(req)
AttributeError: 'str' object has no attribute 'append'

我的总体目标是在特定类别和子类别中搜索这些需求字符串以查找常用字词。这是为了看看我是否可以创建一个自动化流程,我可以为需求字符串建议类别和子类别。

有什么想法吗?

修改

我认为这是因为我的翻译正在调用

ldict[(cat,sub)]

作为一个字符串。我正在寻找解决方案。

2 个答案:

答案 0 :(得分:1)

append()是一个列表方法。字典中有一个字符串。如果要将项目附加到列表,则需要构建字典以包含列表。每当将值放入此字典时,我会建议ldict.setdefault(key, []).append(whatever)之类的内容,以确保您始终有一个列表。

答案 1 :(得分:0)

我猜你要做的是这个:

ldict[(cat, sub)] = req

就像Sean建议的那样:如果您尝试使用(cat, sub)中的密钥ldict访问该列表,然后将req添加到其中,请使用setdefault():< / p>

ldict.setdefault((cat, sub), []).append(req)

如果之前未设置,则将(cat, sub)的值设置为空列表,否则返回列表并最终将req附加到其中。

由于这显然是答案,请Sean帮个忙并接受他的回答......