使用 Python 字典理解填充不同的字典

oli*_*oun 0 python dictionary-comprehension

我想压缩这个语法以避免双重字典理解(我希望获得一些计算时间)

d1 = {loc:list(np.sum(data, 0)) for loc, data in dicos.items()}
d2 = {loc:np.nancumsum(list(np.sum(data, 0))) for loc, data in dicos.items()}
Run Code Online (Sandbox Code Playgroud)

我试过这个没有成功

d1,d2 = [{loc:list(np.sum(data, 0)),loc:np.nancumsum(list(np.sum(data, 0)))} \
         for loc, data in dicos.items()]
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 6

我不明白我们的社区最近痴迷于试图将越来越多的功能推入一个单一的理解中。结果不仅通常不比使用可见循环更有效,而且当作为单个复杂的理解完成时,代码的可读性肯定会低得多。我认为人们不明白的是,无论哪种方式,循环仍然以几乎相同的形式存在……只是如果您使用推导式,它就会隐藏在 Python 库代码中。

这是一种干净、易读的方式来做你想做的事情,你只需要对你的数据进行一次传递,你构建两个字典,你在做什么很清楚:

d1 = {}
d2 = {}
for loc, data in dicos.items():
    d1[loc] = list(np.sum(data, 0))
    d2[loc] = np.nancumsum(list(np.sum(data, 0)))
Run Code Online (Sandbox Code Playgroud)