为了账号安全,请及时绑定邮箱和手机立即绑定

如何展平包含具有不同数量词典的列表的列表?

如何展平包含具有不同数量词典的列表的列表?

翻阅古今 2023-06-20 16:44:16
我有如下的 python 代码:import numpy as npimport multiprocessing as mpdef func(first, sec):    results = []    for x in range(first):        result_dict = {"a": x, "b": x**sec, "c": x/sec}        results.append(result_dict.copy())    return resultswith mp.Pool(mp.cpu_count()) as pool:    res = pool.starmap(func, [(a, 8) for a in range(1, 4)])然后我res用这段代码展平了:res = np.asarray(res)res = res.reshape(-1)res = np.array(res).tolist()之后,当我打印res输出时,如下所示:[[{'a': 0, 'b': 0, 'c': 0.0}], [{'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}], [{'a': 0, 'b': 0, 'c': 0.0},  {'a': 1, 'b': 1, 'c': 0.125},  {'a': 2, 'b': 256, 'c': 0.25}]]但我希望输出是这样的:[{'a': 0, 'b': 0, 'c': 0.0}, {'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}, {'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}, {'a': 2, 'b': 256, 'c': 0.25}]您知道如何更改代码以获得所需的结果吗res?
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

of库允许您将chain.from_iterableitertools列表链接到一个列表。

import itertools


res = [[{'a': 0, 'b': 0, 'c': 0.0}],

 [{'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}],

 [{'a': 0, 'b': 0, 'c': 0.0},

  {'a': 1, 'b': 1, 'c': 0.125},

  {'a': 2, 'b': 256, 'c': 0.25}]]



print(list(itertools.chain.from_iterable(res)))


查看完整回答
反对 回复 2023-06-20
?
杨魅力

TA贡献1811条经验 获得超6个赞

正如在您的示例中,您将字典存储在列表列表中,列表理解也有效:


res = [[{'a': 0, 'b': 0, 'c': 0.0}],

 [{'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}],

 [{'a': 0, 'b': 0, 'c': 0.0},

  {'a': 1, 'b': 1, 'c': 0.125},

  {'a': 2, 'b': 256, 'c': 0.25}]]


flat_res = [item for items in res for item in items]

输出

print(flat_res)

# [{'a': 0, 'b': 0, 'c': 0.0}, {'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}, {'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}, {'a': 2, 'b': 256, 'c': 0.25}]



查看完整回答
反对 回复 2023-06-20
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信