从嵌套键中提取字典值,留下主键,然后转为列表

Den*_*nis 1 python

a = {
    1: {'abc': 50, 'def': 33, 'xyz': 40},
    2: {'abc': 30, 'def': 22, 'xyz': 45},
    3: {'abc': 15, 'def': 11, 'xyz': 50}
}
Run Code Online (Sandbox Code Playgroud)

我想迭代这个嵌套字典,删除子键(或提取子键值),但保留主键。第二步是将字典变成列表的列表:

b = [
    [1, 50, 33, 40],
    [2, 30, 22, 45],
    [3, 15, 11, 50]
]
Run Code Online (Sandbox Code Playgroud)

我浏览了这里无数关于提取键和值的帖子,但找不到足够接近的示例来满足我的需要(这仍然是新的):到目前为止,我有这个:

for key in a.keys():
    if type(a[key]) == dict:
       a[key] = a[key].popitem()[1]
Run Code Online (Sandbox Code Playgroud)

这给出了这个 - 每个键中第三个子键的值:这是一个开始,但不完整或我想要的

{1: 40, 2: 45, 3: 50}
Run Code Online (Sandbox Code Playgroud)

wja*_*rea 5

使用列表推导式a.items(),使用dict.values()来获取值,然后可以使用解包 ( *) 来获取所需的列表。

>>> [[k, *v.values()] for k,v in a.items()]
[[1, 50, 33, 40], [2, 30, 22, 45], [3, 15, 11, 50]]
Run Code Online (Sandbox Code Playgroud)