如何将字典拼成两个列表的元组?

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 出现两次,因为相应的词典条目中有两个元素.

我该怎么做?

Joh*_*ooy 6

如果元组的元组没问题,那就稍微简单了一些

>>> 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)