python拆解字典中包含list的数据,全排列全部组合

2023-11-16

效果就是把类似:

 my_dict = {
        "config_1": [1, 2, 3, 4],
        "config_2": "test",
        "config_3": 4,
        "config_4": ["a", 'b'],
        "config_5": ["a"]
    }

这样的数据拆解为:

{'config_2': 'test', 'config_3': 4, 'config_1': 1, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 1, 'config_4': 'b', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 2, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 2, 'config_4': 'b', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 3, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 3, 'config_4': 'b', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 4, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 4, 'config_4': 'b', 'config_5': 'a'}

工具函数

这里使用一个工具函数:

from copy import deepcopy
from itertools import product


def transform_dict(dict_data):
    """拆解含list的字典值,将值全排列"""
    default_dict = {}
    list_type_key = []
    list_type_value = []
    return_list = []
    for _k, _v in dict_data.items():
        if type(_v) == list:
            list_type_key.append(_k)
            list_type_value.append(dict_data[_k])
        else:
            default_dict[_k] = _v
    # 开始组合全排列
    for _combine_data in product(*list_type_value):
        for _list_i, _list_key in enumerate(list_type_key):
            default_dict[_list_key] = _combine_data[_list_i]
        return_list.append(deepcopy(default_dict))
    return return_list

使用示例

from copy import deepcopy
from itertools import product


def transform_dict(dict_data):
    """拆解含list的字典值,将值全排列"""
    default_dict = {}
    list_type_key = []
    list_type_value = []
    return_list = []
    for _k, _v in dict_data.items():
        if type(_v) == list:
            list_type_key.append(_k)
            list_type_value.append(dict_data[_k])
        else:
            default_dict[_k] = _v
    # 开始组合全排列
    for _combine_data in product(*list_type_value):
        for _list_i, _list_key in enumerate(list_type_key):
            default_dict[_list_key] = _combine_data[_list_i]
        return_list.append(deepcopy(default_dict))
    return return_list


def main():
    my_dict = {
        "config_1": [1, 2, 3, 4],
        "config_2": "test",
        "config_3": 4,
        "config_4": ["a", 'b'],
        "config_5": ["a"]
    }
    trans_list = transform_dict(my_dict)
    [print(_) for _ in trans_list]


if __name__ == '__main__':
    main()

效果如下:

{'config_2': 'test', 'config_3': 4, 'config_1': 1, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 1, 'config_4': 'b', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 2, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 2, 'config_4': 'b', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 3, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 3, 'config_4': 'b', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 4, 'config_4': 'a', 'config_5': 'a'}
{'config_2': 'test', 'config_3': 4, 'config_1': 4, 'config_4': 'b', 'config_5': 'a'}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python拆解字典中包含list的数据,全排列全部组合 的相关文章

  • 如何在 Windows 64 上安装 NumPy?

    NumPy 安装程序在注册表中找不到 python 路径 无法安装 需要 Python 2 5 版本 但在注册表中未找到该版本 OK 我必须修改注册表吗 我已经修改了 PATH 以指向Python25安装目录 我可以检查一下您使用的是什么安
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • 将seaborn.palplot轴添加到现有图形中以可视化不同调色板

    将seaborn人物添加到子图中是usually https seaborn pydata org examples cubehelix palette html创建图形时通过传递 ax 来完成 例如 sns kdeplot x y cma
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐

  • 练习:银行复利计算(用 for 循环解一道初中小题)

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • Redis简述

    1 什么是redis redis是一个nosql not only sql 不仅仅只有sql 数据库 也是一个非关系型数据库 2 redis的应用领域 1 分布式缓存 2 分布式session 3 保存博客或者论坛的留言回复等 总之就是用在
  • 七天玩转Redis

    文章目录 Redis五大数据类型 1 String字符串 2 Hash哈希 3 List列表 4 Set集合 5 ZSet有序集合 sorted set Redis五大数据类型 Redis的五大数据类型分别是String List Set
  • 华为OD机试真题-最大利润【C++ Java Python】

    文章目录 目录 题目内容 解题思路 Java代码 Python代码 C 代码 题目内容 商人经营一家店铺 有number 种商品 由于仓库限制每件商品的最大持有数量是 item index 每种商品的价格是 price item index
  • 人工智能AI 全栈体系(一)

    第一章 神经网络是如何实现的 这些年人工智能蓬勃发展 在语音识别 图像识别 自然语言处理等多个领域得到了很好的应用 推动这波人工智能浪潮的无疑是深度学习 所谓的深度学习实际上就是多层神经网络 至少到目前为止 深度学习基本上是用神经网络实现的
  • mysql 字段值(字符串)累加

    mysql在更新记录时 需要在原来的值上在累加新的值 例如原来有条记录 id country a784829a c0dc 4cb6 88a9 8c376fab83a6 USA 现在更新更新country字段 在原值的基础上添加 UK 使其变
  • 申请Google Player帐号上传自己开发的App

    1 访问https play google com apps publish signup 2 输入个人信息 3 在选择国家 地区时 由于列表中没有中国 所以我们只能选择香港 注册Google Player开发帐号是需要支付25美元费用的
  • Unity中关于委托与事件的使用及区别

    一 前言 1 什么是委托 个人理解 委托是一种容器 容器里面放的是函数方法 而函数的形式各不相同 参数 返回值各不相同 所以你做委托之前 先得要定义好这个委托容器存放的函数的类型 即委托类型 定义了好了函数类型后 将函数加入到委托容器后 你
  • 【Ubuntu】右键菜单添加用vscode打开

    右键菜单添加自定义命令 本文以添加右键使用vscode打开为例 1 进入 local share nautilus scripts文件夹 cd local share nautilus scripts 2 创建文件 vim Open in
  • 关于工具trinity:syscall测试

    git地址 https github com kernelslacker trinity linux下对syscall的模糊测试 main函数位于trinity c中 int main int argc char argv int ret
  • PLC通讯协议【三菱】FX协议的报文格式和读写示例

    通过编程口通讯协议 具体可操作的软元件有 X Y M S T C D 通讯设置 必须设置为 波特率9600 偶校验 7位数据位 1停止位 否则无法通讯 一 报文结构 注意 通讯协议中的所有字符是用它们的十六进制ASCII码表示 如果有十进制
  • Unity 3D模型展示之模型高亮

    最终效果 1 导入插件Outline Effect 在Asset Store或者Package Manager中搜索Outline Effect 并导入插件 导入成功后 2 Outline Effect 的使用 Main Camera添加O
  • 浅谈伺服电机三种控制方式

    速度控制和转矩控制都是用模拟量来控制的 位置控制是通过发脉冲来控制的 具体采用什么控制方式要根据客户的要求 满足何种运动功能来选择 如果您对电机的速度 位置都没有要求 只要输出一个恒转矩 当然是用转矩模式 如果对位置和速度有一定的精度要求
  • Vue中Rule的使用

    日常的rule效验 能帮我们省很多时间去做if eles判断 下边记录一下我在入职新公司的使用 1 需要效验的字段 要在from item上家prop属性 可以和字段同名 2 在data中创建一个rules对象 绑定当前的from表单 并把
  • dev c++无法识别汇编代码_新手福利丨超详细的Tengine GEMM矩阵乘法汇编教程

    很多刚入门Tengine的开发者想研读Tengine汇编代码 却苦于没有好的汇编入门教程 没有大神带入门 自己看又看不懂 怎么办 福利来了 Tengine带来了一份超详细的gemm汇编教程 GEMM简介 什么是GEMM 它的英文全称是 GE
  • 常见服务知识点罗列--haproxy/keepalived

    一 haproxy 1 haproxy配置的主要模块 global defaults 主要功能 实现负载均衡 root k8s ha1 vim etc haproxy haproxy cfg listen k8s 6443 bind 192
  • Prometheus监控 controller-manager scheduler etcd

    用prometheus插件监控kubernetes控制平面 例如 您使用kubeadm构建k8s集群 然后kube控制器管理器 kube调度程序和etcd需要一些额外的工作来进行发现 create service for kube cont
  • 利用pandas生成csv文件和读取csv文件中的方法

    方法一 1 我构造了一个cont list 结构为列表嵌套字典 字典是每一个样本 类似于我们爬虫爬下来的数据的结构 2 利用pd DataFrame方法先将数据转换成一个二维结构数据 如下方打印的内容所示 cloumns指定列表 列表必须是
  • MySQL主从复制与读写分离

    目录 主从复制与读写分离 读写分离 MySQL 读写分离原理 读写分离分类 主从复制 mysq支持的复制类型 主从复制的工作过程 MySQL主从复制延迟 搭建 MySQL主从复制 搭建 MySQL读写分离 主从复制与读写分离 在实际的生产环
  • python拆解字典中包含list的数据,全排列全部组合

    效果就是把类似 my dict config 1 1 2 3 4 config 2 test config 3 4 config 4 a b config 5 a 这样的数据拆解为 config 2 test config 3 4 conf