Python 如何将字典中的每个键:值对转换为二维数组中的扁平行?

Python 如何将字典中的每个键:值对转换为二维数组中的扁平行?,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有以下字典: dct = {'F': [0, 0, 0, 1], 'T': [0, 3, 0, 4], 'B': [1, 1, 0, 1], 'K': [2, 2, 0, 1], 'J': [2, 4, 0, 2], 'Bxx': [4, 4, 0, 1]} 我想将其转换为以下2D数组: ultimate_list = [['F', 0, 0, 0, 1], ['T', 0, 3, 0, 4], ['B', 1, 1, 0, 1], ['K', 2, 2, 0, 1], ['J', 2, 4

我有以下字典:

dct = {'F': [0, 0, 0, 1], 'T': [0, 3, 0, 4], 'B': [1, 1, 0, 1], 'K': [2, 2, 0, 1], 'J': [2, 4, 0, 2], 'Bxx': [4, 4, 0, 1]}
我想将其转换为以下2D数组:

ultimate_list = [['F', 0, 0, 0, 1], ['T', 0, 3, 0, 4], ['B', 1, 1, 0, 1], ['K', 2, 2, 0, 1], ['J', 2, 4, 0, 2], ['Bxx', 4, 4, 0, 1]]
到目前为止,我已经完成了以下工作,但并没有得到我想要的结果:

final_list = []

for k, v in dct.items():
    final_list.append([k, v])


flat_list = []
for sublist in final_list:
    for item in sublist:
        flat_list.append(item)

print(flat_list)
哪个输出:

flat_list = ['F', [0, 0, 0, 1], 'T', [0, 3, 0, 4], 'B', [1, 1, 0, 1], 'K', [2, 2, 0, 1], 'J', [2, 4, 0, 2], 'Bxx', [4, 4, 0, 1]]

现有代码的问题是行
final\u list.append([k,v])
,您正在添加一个包含
k
v
的列表,这是另一个列表。在这里,您应该进行解包,将它们展平为单个1D列表,即

for k, v in dct.items():
    final_list.append([k, *v])
但是,您可以使用列表来缩短代码。较旧版本的python允许您这样做

>>> [[k] + [v] for k, v in dct.items()]
在支持列表中星号赋值的python(3.6+)的更高版本上,您现在可以执行以下操作

>>> [[k, *v] for k, v in dct.items()]


请注意,结果的顺序仅与python3.6+上的字典顺序相同(字典在旧版本上不排序)。

只需更改以下语句即可

final_list.append([k, v])

并删除除最后一条打印语句之外的上述语句后面的代码。你完了

我修改了你的代码如下

dct = {'F': [0, 0, 0, 1], 'T': [0, 3, 0, 4], 'B': [1, 1, 0, 1], 'K': [2, 2, 0, 1], 'J': [2, 4, 0, 2], 'Bxx': [4, 4, 0, 1]}

final_list = []

for k, v in dct.items():
    final_list.append([k] + v)

print(final_list)
»输出

[['B', 1, 1, 0, 1], ['F', 0, 0, 0, 1], ['T', 0, 3, 0, 4], ['J', 2, 4, 0, 2], ['Bxx', 4, 4, 0, 1], ['K', 2, 2, 0, 1]]

如果将k转换为一个列表,那么只需将其添加到v(已经是一个列表)。例如[1]+[2]=[1,2]

[[k] + v for k, v in dct.items()]

@很抱歉,谢谢你。我想现在修好了。
[['B', 1, 1, 0, 1], ['F', 0, 0, 0, 1], ['T', 0, 3, 0, 4], ['J', 2, 4, 0, 2], ['Bxx', 4, 4, 0, 1], ['K', 2, 2, 0, 1]]
[[k] + v for k, v in dct.items()]