根据之前的问题,我在尝试增加列表中包含的字典值时遇到问题,我还有一些关于使用字典的其他想法,但我不确定它们是否可行或可行?
我的第一个问题是是否可以增加列表中包含值的字典键值?
说我有一个字典条目......
PointsOfInterest = {
'InterestingString1':['String 1 Description', 0],
'InterestingString2':['String 2 Description', 0],
'InterestingString3':['String 3 Description', 0],}
我正在扫描一个文本文件,查找感兴趣的字符串(在字典中表示为'key'。当找到Key匹配时,我想增加值 list 中的计数,in这种情况是上面词典中的第二个列表条目。这可以实现,因为我在运行时目前得到TypeErrors。'String 1 Description'列表条目在那里,以便我可以在稍后添加到Excel时引用它,只是为了将所有内容组合在一起,以便以后更容易扩展脚本,但这似乎会导致我的增量方法出现问题。
以下方法在没有列表方法的情况下工作,例如只是在没有'String#Description'条目的情况下递增单个值
for k, v in PointsOfInterest.iteritems():
if k in mypkt.Text:
PointsOfInterest[k] = PointsOfInterest[k] + 1
我有另外一个与上面类似的问题,但是我希望将值附加到dict中列表中的列表而不是递增值!这可能是我怀疑的太多了,但是沿着下面的字典?
ValuesOfInterest = {
'AnotherString1':['Short Description1', []],
'AnotherString2':['Short Description2', []],
'AnotherString3':['Short Description3', []],}
答案 0 :(得分:2)
增加计数器的问题在于这一行:
PointsOfInterest[k] = PointsOfInterest[k] + 1
您正在尝试将1
添加到列表中,而不是项目。您可以通过添加要添加的列表元素来更正此问题:
PointsOfInterest[k][1] = PointsOfInterest[k][1] + 1
您的附加问题可能是同一个问题。您需要附加到子列表中的元素:
ValuesOfInterest[k][1].append(NEWITEM)
答案 1 :(得分:1)
您还需要索引列表对象:
for k, v in PointsOfInterest.iteritems():
if k in mypkt.Text:
PointsOfInterest[k][1] = PointsOfInterest[k][1] + 1
或更短(因为您已经v
引用了相同的值):
for k, v in PointsOfInterest.iteritems():
if k in mypkt.Text:
v[1] += 1
同样适用于将项目附加到值中的嵌套列表:
for k, v in PointsOfInterest.iteritems():
if k in mypkt.Text:
v[1].append(mykt.Text)