【发布时间】:2018-08-28 22:34:45
【问题描述】:
给定
import numpy as np
t={'a':np.random.randint(0,9,[2,3]),'b':np.random.randint(0,9,[2,4])}
l=np.hstack([t.get(k) for k in t.keys()])
l=np.vstack((l, np.random.randint(0,9,[1,7])))
有没有办法将上面的列表 l 映射到字典,这样键映射到字典 t 中的键,值映射到修改后的列表 l 在列上对齐,与 @ 相同987654328@?
以下for loop 有效:
t2={}
s=0
e=0
for k in t.keys():
e=s+t.get(k).shape[1]
t2[k]=l[:,s:e]
s=e
但我想知道是否存在与上述 for 循环等效的单行字典理解?
【问题讨论】:
-
我会说不,当迭代字典时,不确定顺序是否始终相同,因此在此处的代码中,有关数组连接顺序的信息丢失了。 . 您可以使用OrderedDict,但我认为有更好的方法可以做到这一点,您能否详细说明您正在尝试做什么?
-
@xdze2 这取决于你的 python 版本。从python 3.7 开始,dicts 正式按其键的插入顺序排序。在 Cpython 3.6 中已经如此,但它被认为是 implementation detail。
标签: python dictionary-comprehension