Feb*_*day 0 python dictionary flatten
现在我有一本字典,
{2.9: [0.66], 3.3: [0.82, 0.48]}
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个由两个列表组成的元组:
([3.3, 3.3, 2.9], [0.82, 0.48, 0.66])
Run Code Online (Sandbox Code Playgroud)
3.3 出现两次,因为相应的词典条目中有两个元素.
我该怎么做?
如果元组的元组没问题,那就稍微简单了一些
>>> D = {2.9: [0.66], 3.3: [0.82, 0.48]}
>>> tuple(zip(*((k, v) for k in D for v in D[k])))
((3.3, 3.3, 2.9), (0.82, 0.48, 0.66))
Run Code Online (Sandbox Code Playgroud)
如果你真的需要清单
>>> tuple(map(list, zip(*((k, v) for k in D for v in D[k]))))
([3.3, 3.3, 2.9], [0.82, 0.48, 0.66])
Run Code Online (Sandbox Code Playgroud)
我对@ Steven和@ Padraic的答案有所不同.(我避免使用,dict.items因为它在Python2和Python3之间的行为是如此不同)
keys, vals = result = [], []
for k in D:
v = D[k]
vals += v
keys += [k] * len(v)
print(result)
Run Code Online (Sandbox Code Playgroud)