Python递增列表中保存的Dictionary值条目

时间:2015-04-30 12:41:16

标签: python list dictionary

根据之前的问题,我在尝试增加列表中包含的字典值时遇到问题,我还有一些关于使用字典的其他想法,但我不确定它们是否可行或可行?

我的第一个问题是是否可以增加列表中包含值的字典键值?

说我有一个字典条目......

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', []],}

2 个答案:

答案 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)