字典理解:如果键存在,则附加到键值;如果键不存在,则创建一个新的键:值对

1 python dictionary list-comprehension dictionary-comprehension

我的代码如下:

for user,score in data:
    if user in res.keys():
        res[user] += [score]
    else:
        res[user] = [score]
Run Code Online (Sandbox Code Playgroud)

其中 data 是按如下方式排列的列表的列表:

data = [["a",100],["b",200],["a",50]] 
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

res = {"a":[100,50],"b":[200]}
Run Code Online (Sandbox Code Playgroud)

是否可以通过单个字典理解来做到这一点?

Rak*_*esh 6

这可以使用dict.setdefault或简化collections.defaultdict

前任:

data = [["a",100],["b",200],["a",50]]
res = {}   #or collections.defaultdict(list)
for k, v in data:
    res.setdefault(k, []).append(v)  #if defaultdict use res[k].append(v)

print(res)
Run Code Online (Sandbox Code Playgroud)

输出:

{'a': [100, 50], 'b': [200]}
Run Code Online (Sandbox Code Playgroud)