假设我有一个数据文件,其中一个字符串(比如'a,'b','c'...)多次出现。我希望使用'a'和'b'作为键,并且它们具有多个与之关联的值。
如果我的词典是dict,并且我使用dict1.update({'a':1})
后跟dict1.update[{'a':2}]
,则2会覆盖值1.但是,我不能使用dict['a'].append([2])
,除非键'a'已经在文件中。
因此,我正在寻找一些方法来检查一个密钥是否已经在我的列表中,在这种情况下我使用append,或者如果不是,则使用update。什么是在这种情况下可以使用的简单条件语句?
答案 0 :(得分:1)
示例:
from collections import defaultdict
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)
基本上你用一个工厂函数初始化它,它将返回'default'值应该是什么,当你尝试通过键从字典中获取一个项目时,如果该键尚不存在,它将运行该函数。在这种情况下,它将返回一个空列表。
答案 1 :(得分:1)
有两种方法:
defaultdict
假设您的文件如下所示:
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)