在 python 中从平面列表创建嵌套字典的通用方法

2023-11-26

我正在寻找最简单的generic转换此 python 列表的方法:

x = [
        {"foo":"A", "bar":"R", "baz":"X"},
        {"foo":"A", "bar":"R", "baz":"Y"},
        {"foo":"B", "bar":"S", "baz":"X"},
        {"foo":"A", "bar":"S", "baz":"Y"},
        {"foo":"C", "bar":"R", "baz":"Y"},
    ]

into:

foos = [ 
         {"foo":"A", "bars":[
                               {"bar":"R", "bazs":[ {"baz":"X"},{"baz":"Y"} ] },
                               {"bar":"S", "bazs":[ {"baz":"Y"} ] },
                            ]
         },
         {"foo":"B", "bars":[
                               {"bar":"S", "bazs":[ {"baz":"X"} ] },
                            ]
         },
         {"foo":"C", "bars":[
                               {"bar":"R", "bazs":[ {"baz":"Y"} ] },
                            ]
         },
      ]

组合“foo”、“bar”、“baz”是唯一的,正如您所看到的,列表不一定按此键排序。


#!/usr/bin/env python3
from itertools import groupby
from pprint import pprint

x = [
        {"foo":"A", "bar":"R", "baz":"X"},
        {"foo":"A", "bar":"R", "baz":"Y"},
        {"foo":"B", "bar":"S", "baz":"X"},
        {"foo":"A", "bar":"S", "baz":"Y"},
        {"foo":"C", "bar":"R", "baz":"Y"},
    ]


def fun(x, l):
    ks = ['foo', 'bar', 'baz']
    kn = ks[l]
    kk = lambda i:i[kn]
    for k,g in groupby(sorted(x, key=kk), key=kk):
        kg = [dict((k,v) for k,v in i.items() if k!=kn) for i in g]
        d = {}
        d[kn] = k
        if l<len(ks)-1:
            d[ks[l+1]+'s'] = list(fun(kg, l+1))
        yield d

pprint(list(fun(x, 0)))

[{'bars': [{'bar': 'R', 'bazs': [{'baz': 'X'}, {'baz': 'Y'}]},
           {'bar': 'S', 'bazs': [{'baz': 'Y'}]}],
  'foo': 'A'},
 {'bars': [{'bar': 'S', 'bazs': [{'baz': 'X'}]}], 'foo': 'B'},
 {'bars': [{'bar': 'R', 'bazs': [{'baz': 'Y'}]}], 'foo': 'C'}]

note:字典是无序的!但和你的一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 中从平面列表创建嵌套字典的通用方法 的相关文章

  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 在 python 中创建圆形条形图

    我有兴趣在我的项目中使用圆形条形图可视化 但不知道如何用 Python 生成它 请参阅下面的 圆形条形图 含义的示例 数据将以 pandas 系列的形式出现 下面的虚拟示例模糊地反映了情节 A 33 B 62 C 56 D 70 任何想法
  • Datadog Grok 解析 - 从嵌套 JSON 中提取字段

    是否可以提取嵌套在日志中的 json 字段 我一直在研究的示例 thread 191555 app main cid 2cacd6f9 546d 41ew a7ce d5d41b39eb8f uid e6ffc3b0 2f39 44f7 8
  • 如何获取已连接 WiFi android 的信号强度?

    我想获取与我的设备连接的 wifi 的信号强度 这可能很容易 但我是初学者 这是作业 如何获得 我尝试了这段代码 但这不起作用 registerReceiver new BroadcastReceiver Override public v
  • 将多个项目发布到Azure网站上的不同位置

    请随意推荐一个更好的标题或更改我下面的解释 我正在使用 Windows Azure 网站 第一次 并将其连接到 Visual Studio Online 中的解决方案 也是我第一次 我还能够连接到 Visual Studio Online
  • 如何使用 django-storages 生成预签名的 S3 url?

    我有一个 Django 表单 它通过 django storages 库将文件保存到 s3 并且工作正常 如何生成并返回预签名 URL 以便用户可以在文件上传后临时访问该文件 这是由 django storages 抽象的还是我必须使用 b
  • Node.js 中的声明 var 是什么?

    在这段nodejs代码中 declare var process NodeJS Process declare var global NodeJS Global declare var console Console declare var
  • 如何防止 csv.DictWriter() 或 writerow() 四舍五入我的浮动?

    我有一本字典想要写入 csv 文件 但是当我将字典中的浮点数写入文件时 它们会被四舍五入 我想保持最大精度 舍入发生在哪里以及如何防止它发生 我做了什么 我跟着DictWriter 示例在这里我正在 Mac 上运行 Python 2 6 1
  • 承诺返回未定义

    我正在尝试使用 Promise 将 ajax 请求发送到 php 脚本 该脚本检查服务器上是否存在文件并返回布尔值 我有以下代码 但 fileExists 函数始终返回未定义 如何将 Promise 包装在函数中并让该函数返回 Promis
  • 使用cloudwatch判断linux服务是否正在运行

    假设我有一个带有服务的 ec2 实例 etc init my service conf有内容 script exec my exec end script 我如何监控该 ec2 实例 以便如果my service停止运行我可以采取行动吗 您
  • 如何在 const 字符串中包含枚举值?

    from 这个问题 我知道一个const string可以是以下的串联const事物 现在 枚举只是一组连续的整数 不是吗 那么为什么这样做不行呢 const string blah blah MyEnum Value1 或这个 const
  • 如何将html存储到mysql数据库中

    我试图将 HTML 存储在数据库中 因此当我从数据库检索表单时 我需要将其显示为表单而不是文本 有没有办法做到这一点 这是表格 form
  • 如何使一个方法接受任何类型的数组作为参数?

    我希望能够将任何数组类型作为方法中的参数 public void foo Array array System out println array length 有没有一种方法可以用相同的方法传递 String 或 int 数组 Use g
  • tomcat服务器无法启动STS中的服务器和应用程序[重复]

    这个问题在这里已经有答案了 当我运行 Spring MVC 应用程序时 出现此异常并且服务器无法启动 请帮我解决这个问题 异常堆栈跟踪 Jan 24 2013 11 33 59 AM org apache catalina startup
  • python 惯用的 python for 循环 if else 语句

    我该如何使用else惯用的 Python 语句for环形 没有else我可以写例如 res i for i in 1 2 3 4 5 if i lt 4 结果是 1 2 3 上述代码的正常形式是 res for i in 1 2 3 4 5
  • 如何通过鼠标悬停播放/暂停多个视频

    我有一个包含很多视频的页面并希望播放 每个视频上mouseOver并暂停mouseOut 它正在与 video1 一起使用 但我想与 video2 一起使用 依此类推 div style text align center div
  • 保护 openpyxl 中的工作簿

    我尝试使用 openpyxl 保护 Excel 工作簿 到目前为止 我已经研究了不同的 可能相关的课程 但我找不到set password方法类似于工作表 恰好有工作簿 保护我尝试过运气的模块 我的代码归结为绝对相关的最小值如下 from
  • 自定义ClassLoader,如何使用?

    我正在尝试使用自定义类加载器来加载应用程序所需的所有依赖项 我已经在网站之后实现了 customerClassLoader https www javacodegeeks com 2013 03 java handmade classloa
  • JavaScript 闭包

    我仍然对 JavaScript 中的闭包概念感到困惑 我的观点是 闭包是内部函数在母函数返回后访问其母函数中创建的变量的能力 但我仍然很困惑 如果我们可以在函数内部创建变量 为什么我们必须创建内部函数来保护局部变量 我们需要创建一个内部函数
  • dom 节点太多导致 JavaScript 性能问题?

    我目前正在调试一个 ajax 聊天 它会无休止地用 DOM 元素填充页面 如果你的聊天持续了大约 3 个小时 你最终会发现上帝现在有多少个 DOM 节点 相关问题有哪些extremeDOM 的使用 UI 是否有可能变得完全无响应 尤其是在
  • 在 python 中从平面列表创建嵌套字典的通用方法

    我正在寻找最简单的generic转换此 python 列表的方法 x foo A bar R baz X foo A bar R baz Y foo B bar S baz X foo A bar S baz Y foo C bar R b