我有以下字典:
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]]
答案 0 :(得分:4)
您现有代码的问题在于DraftEditorContents-core.react.js:80 Uncaught TypeError: nextEditorState.getDirectionMap is not a function
at DraftEditorContents.shouldComponentUpdate (DraftEditorContents-core.react.js:80)
at checkShouldComponentUpdate (react-dom.development.js:11345)
at updateClassInstance (react-dom.development.js:11754)
at updateClassComponent (react-dom.development.js:13153)
at beginWork (react-dom.development.js:13824)
at performUnitOfWork (react-dom.development.js:15863)
at workLoop (react-dom.development.js:15902)
at HTMLUnknownElement.callCallback (react-dom.development.js:100)
at Object.invokeGuardedCallbackDev (react-dom.development.js:138)
at invokeGuardedCallback (react-dom.development.js:187)
行,您附加了包含final_list.append([k, v])
和k
的列表,这是另一个列表。在这里你应该完成解包,将它们压缩成一个单一的列表,即
v
但是,您可以使用列表推导来缩短代码。较旧版本的python允许你做
for k, v in dct.items():
final_list.append([k, *v])
在支持列表中已加星标的作业的python(3.6+)的更高版本中,您现在可以
>>> [[k] + [v] for k, v in dct.items()]
>>> [[k, *v] for k, v in dct.items()]
请注意,结果的顺序与python3.6 +上的字典顺序相同(旧版本不会对字典进行排序)。
答案 1 :(得分:2)
只需更改以下声明
即可final_list.append([k, v])
到
final_list.append([k] + v)
除去上一个 print 语句之外,删除上述语句后面的代码。你已经完成了。
我修改了你的代码如下。
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]]
答案 2 :(得分:0)
如果将k转换为列表,则可以将其添加到v(已经是列表)。例如。 [1] + [2] = [1,2]
[[k] + v for k, v in dct.items()]