列表作为值的python字典

时间:2013-03-18 22:06:52

标签: python list dictionary

我有一个像

这样的字符串列表
vals = ['a', 'b', 'c', 'd',........]

使用vals,我会向每个val [i]的服务器发出请求。服务器会为每个val返回一个数字。

'a'可以是1,'b'可以是2,'c'可以是1,'d'可以是2,依此类推。 现在我想创建一个看起来像

的字典
{ 1: ['a','c'], 2:['b','d'], 3: ['e'], ..... } 

实现这一目标的最快方法是什么?我可以用某种方式使用map()吗? 我的意思是我可以尝试将请求的结果存储在一个单独的列表中,然后逐个映射它们 - 但我试图避免这种情况。

2 个答案:

答案 0 :(得分:4)

以下应该可以使用dict.setdefault()

results = {}
for val in vals:
    i = some_request_to_server(val)
    results.setdefault(i, []).append(val)

results.setdefault(i, []).append(val)在行为上等同于以下代码:

if i in results:
    results[i].append(val)
else:
    results[i] = [val]

答案 1 :(得分:2)

或者,您可以使用defaultdict中的collections,如下所示:

from collections import defaultdict
results = defaultdict(list)
for val in vals:
    i = some_request_to_server(val)
    results[i].append(val)