结合使用更新和附加词典

时间:2013-07-25 22:32:51

标签: python

假设我有一个数据文件,其中一个字符串(比如'a,'b','c'...)多次出现。我希望使用'a'和'b'作为键,并且它们具有多个与之关联的值。

如果我的词典是dict,并且我使用dict1.update({'a':1})后跟dict1.update[{'a':2}],则2会覆盖值1.但是,我不能使用dict['a'].append([2]),除非键'a'已经在文件中。

因此,我正在寻找一些方法来检查一个密钥是否已经在我的列表中,在这种情况下我使用append,或者如果不是,则使用update。什么是在这种情况下可以使用的简单条件语句?

4 个答案:

答案 0 :(得分:1)

使用defaultdict

示例:

from collections import defaultdict
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)

基本上你用一个工厂函数初始化它,它将返回'default'值应该是什么,当你尝试通过键从字典中获取一个项目时,如果该键尚不存在,它将运行该函数。在这种情况下,它将返回一个空列表。

答案 1 :(得分:1)

有两种方法:

  1. 使用defaultdict
  2. 使用您自己的defaultdict
  3. 实现

    假设您的文件如下所示:

    a 1
    b 4
    a 2
    ...
    

    然后你可以这样做:

    import collections 
    answer = collections.defaultdict(list) 
    with open('path/to/file') as infile:
        for line in infile:
            key, value = line.strip().split()
            answer[key].append(value)
    

    如果您不想使用defaultdict,那么:

    answer = {}
    with open('path/to/file') as infile:
        for line in infile:
            key, value = line.strip().split()
            if key not in answer:
                answer[key] = []
            answer[key].append(value)
    

    希望这有帮助

答案 2 :(得分:0)

要检查dict是否有密钥,您可以执行dict.has_key('a')

答案 3 :(得分:0)

dict1 = dict.fromkeys(st,[]) # where st is your string.
dict1['a'].append(1)
dict1['a'].append(2)