如果键已存在,则将值附加到键(python/jython)

use*_*839 3 python dictionary jython key

我有一个列表,我需要在字典中.该列表具有重复(即将成为)具有不同值的键.如何找到这些键并将新值附加到它?

list=[q:1,w:2,q:7]
dictionary= q:1,7
            w:2
Run Code Online (Sandbox Code Playgroud)

提前致谢

lvc*_*lvc 9

在字典列表中创建值,以便您具有:

dictionary = {'q': [1, 7],
              'w': [2]
}
Run Code Online (Sandbox Code Playgroud)

等等,即您的单项值是单项列表.这意味着当你有另一个时'q',你可以这样做:

dictionary['q'].append(5)
Run Code Online (Sandbox Code Playgroud)

除非这dictionary['q']KeyError您第一次这样做,所以请setdefault改用:

dictionary.setdefault('q', []).append(5)
Run Code Online (Sandbox Code Playgroud)

因此,现在您只需要迭代输入列表中的每个键值对,并为每个键执行上述操作.

您可能还想要dictionary:

dictionary = collections.defaultdict(list)
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做dictionary['q'].append(5)- 它的工作原理与上面相同,在所有方面都是第一个.如果在解析原始列表并正确设置所有值后,您的字典如下所示:

dictionary = {'q': [1, 7, 5]
              'w': [2, 8, 10, 80]
              'x': [3]
}
Run Code Online (Sandbox Code Playgroud)

你试着去做print(dictionary['y']).你期望发生什么?如果你使用普通的dict setdefault,这被认为是一个错误,所以它会提高KeyError.如果使用a defaultdict,则会打印一个空列表.无论哪种方法对代码更有意义,都应确定对代码进行编码的方式.

  • 更好的是,使用`collections.defaultdict(list)` - 然后你可以像使用普通字典那样分配或查找. (2认同)