繁体   English   中英

带有列表作为值的python字典

[英]python dictionary with list as values

我有一个像这样的字符串列表

vals = ['a', 'b', 'c', 'd',........]

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

“ a”可能是1,“ b”可能是2,“ c”又是1,“ d”又是2,依此类推。 现在我想创建一个看起来像这样的字典

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

实现这一目标的最快方法是什么? 我可以以某种方式使用map()吗? 我的意思是我可以尝试通过将请求的结果存储在单独的列表中,然后将它们一一对应来进行尝试,但是我想避免这种情况。

以下应该可以使用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]

另外,您可以使用如下collections defaultdict

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM