首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Python中的多个列表创建一组值

如何从Python中的多个列表创建一组值
EN

Stack Overflow用户
提问于 2021-10-04 11:30:50
回答 4查看 66关注 0票数 0

我在config.json中有以下数据

代码语言:javascript
复制
{
  "data1": [7, 8],
  "data2": [2015, 2016],
  "data3": [5, 10],
}

它有3个列表,长度为2,但它可以有多个列表,具有n个长度。我必须读取这些数据,然后创建一个列表,其中应该有所有的值,就像set一样。因此,输出应该如下所示:

代码语言:javascript
复制
[
    [7, 2015, 5],
    [7, 2015, 10],
    [7, 2016, 5],
    [7, 2016, 10],
    [8, 2015, 5],
    [8, 2015, 10],
    [8, 2016, 5],
    [8, 2016, 10]
]


json_data = open("config.json")
config = json.load(json_data)
json_data.close()

data_list = []
for be in config["data1"]:
    for eof in config["data2"]:
        for bd in config["data3"]:
            data_list.append(bd)

但是,我无法理解如何修改数据,使其具有上述输出。有人能给我点建议吗。请帮帮忙。谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-10-04 11:59:40

这里有一些关于客人回答的信息,因为你似乎很难理解它。

代码语言:javascript
复制
json_data = open("config.json")
config = json.load(json_data)
json_data.close()

cproduct = list(itertools.product(*config.values()))

product函数将给您笛卡尔积,这正是您所需要的:来自不同集合的所有可能的元素组合。我们基本上使用它作为product(set_1, set_2, ..., set_n)

在这里,set_1应该是用"data1"键存储的列表,set_2应该存储在"data2"中,等等。这样你就可以写it.product(config['data1'], config['data2'], config['data3'])了。

但是,我们如何在不更改代码的情况下处理json中的新密钥呢?

要做到这一点,guest_a依赖于两件事:

  • config.values(),它返回每个值的列表,因此在您的示例中,一个包含json中定义的所有列表的列表。这样,如果在json文件中添加一个新的"data4"密钥,就会得到新的列表.

  • 解包装*运算符,它允许我们使用任何可迭代的参数列表.

因此,基本上,it.product(*config.values())等同于it.product(config["data1"], ..., config["data_n"]),但要灵活得多。

票数 1
EN

Stack Overflow用户

发布于 2021-10-04 11:39:03

您可以使用itertools.product

代码语言:javascript
复制
list(it.product(*data.values()))
票数 4
EN

Stack Overflow用户

发布于 2021-10-04 11:40:35

使用itertools.product,它给出了一系列可迭代性的笛卡尔积:

代码语言:javascript
复制
from itertools import product
data = {'data1': [7, 8], 'data2': [2015, 2016], 'data3': [5, 10]}
cprod = product(*data.values())
for cp in cprod:
    print(cprod)
(7, 2015, 5)
(7, 2015, 10)
(7, 2016, 5)
(7, 2016, 10)
(8, 2015, 5)
(8, 2015, 10)
(8, 2016, 5)
(8, 2016, 10)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69435242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档