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