制作或预定义嵌套字典/JSON 的结构 || Python

2024-02-19

输入:我有包含 3 列的 Excel 文件,Excel 文件的格式如下:

A   C   D
A   C   E
A   F   G
B   H   J
B   H   K
A   F   I
B   L   M
B   L   N
A   F   O

我希望根据上面的输入以以下格式制作字典: 输出:

dictionary= {'A':{'C':['D','E'],'F':['G','I','O']},'B':{'H':['J','K'],'L':['M','N']}}

逻辑:对于每个不同的第 1 列值,需要创建嵌套字典,并且在该嵌套部分中,对于每个不同的第 2 列值,需要创建相应的第 3 列值的列表。


你可以用 pandas 这样做:

import pandas as pd

df = pd.read_excel('excel_file', header=None)
d = {}
for b in df.groupby([0,1])[2].apply(list).to_frame().iterrows():
    if b[0][0] not in d:
        d[b[0][0]] = {b[0][1]: b[1].tolist()[0]}
    else:
        d[b[0][0]][b[0][1]] = b[1].tolist()[0]
print d

Output:

{'A': {'C': ['D', 'E'], 'F': ['G', 'I', 'O']}, 'B': {'H': ['J', 'K'], 'L': ['M', 'N']}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作或预定义嵌套字典/JSON 的结构 || Python 的相关文章

随机推荐

  • 为什么 C 中的复合文字可以修改

    人们通常会将 不可修改 与术语 字面量 联系起来 char str Hello World str B Bus Error 然而 当使用复合文字时 我很快发现它们是完全可修改的 查看生成的机器代码 您会看到它们被推入堆栈 char str
  • MySQL 跳过名称解析

    我在 1 台专用服务器中使用 MariaDB MySQL 所有数据库和 PHP 都在本地服务器中 我不使用远程服务器 运行 mysqltuner 时 我收到使用 跳过名称解析 所以我在 my cnf 中添加了这段代码 skip name r
  • jetty如何处理多个请求

    我已经使用 jetty tomcat 应用服务器处理 Spring Web 应用程序大约两年了 但是我仍然困惑的是这些服务器中如何处理多个请求 我知道 spring 对于创建单例很有帮助 但我的理解仅限于此 有人可以指出任何可以帮助我了解如
  • ruby 中是否可以取消定义变量?

    在 ruby 中 有没有办法在定义变量或常量后 取消定义 变量或常量 在我们的 Rails 环境中 我们将三个内容之一定义为true 取决于环境 TESTING DEVELOPMENT or PRODUCTION 然后 在控制器代码中 我们
  • 在Fabric js中的两个对象之间添加动画

    我有一个非常基本的应用程序 可让您创建形状并用线连接它们 为此 您需要执行以下操作 Example 1 Click new animation 2 add rectangle 3 add child 4 add circle 您可以移动形状
  • 将基本脚本转换为 Objective C(货币格式)

    我有这个基本的类似脚本 我需要将其转换为 Objective C 它将大单位的金钱转换为缩短的版本 即 1 2m 等 我已经完成了大部分转换 但最大的问题是我我就在最后 原来的基本代码是 Basic Code Function ShortC
  • mysqli_result 类的对象无法转换为字符串返回 mysql 平均值 [重复]

    这个问题在这里已经有答案了 有人能解释一下我如何输出下面的sql结果吗 当前收到 mysqli result 类的对象无法转换为字符串 sql SELECT AVG ab satisfactionScore AS AverageSatisf
  • Jenkins 管道作业:从字符串参数设置睡眠时间?

    我是 Jenkins Pipeline 工作的新手 我面临着一个无法解决的问题 我有一个带有硬编码的舞台sleep秒值 stage wait prior starting smoke testing echo Waiting 5 minut
  • 抑制 C 宏变量替换

    我有这段代码 实际上是垃圾收集 Forth 系统解释器的一部分 define PRIMITIVE name do VocabEntry entry VocabEntry gc alloc sizeof VocabEntry entry gt
  • 如何让 Capistrano 3 使用 RVM ruby​​?

    Gemfile gem capistrano gt 3 0 0 gem capistrano rails gem capistrano bundler gem capistrano rvm gem capistrano3 puma 部署 r
  • AspNetCore 2.1 中使用 WsFederation 时出现注销 (LogOut) 错误

    我在 ASP NET Core 2 1 应用程序中注销 注销 时收到以下错误 没有为 联合 方案注册注销身份验证处理程序 注册的注销方案有 WsFederation Cookies 您是否忘记调用 AddAuthentication Add
  • 撇号打印为 â\x80\x99

    import requests from bs4 import BeautifulSoup import re source url requests get http www nytimes com pages business inde
  • PostgreSQL:在 Ubuntu 上重置 PostgreSQL 的密码 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 在 Ubuntu 中 我安装了 PostgreSQL 数据库并为服务器创建了一个超级用户 如果我忘记了 postgresql 超级用户的密码 如何为该
  • vue-router - 使用新导航取消从“/”到“/password”的导航

    尝试导航到密码页面 vue router 抛出此错误 Uncaught in promise Error Navigation cancelled from to password with a new navigation 导航到密码页面
  • python 多处理/线程清理

    我有一个 python 工具 基本上有这样的设置 main process P1 gt spawns a process P2 that starts a tcp connection gt spawns a thread T1 that
  • 如何从keycloak中的自定义客户端获取角色?

    为了获得自定义客户端中的角色 我知道我需要执行两个 API 一种是获取访问令牌 一种是获取角色 我的疑问是 我应该通过在标头中发送 admin CLI 详细信息来获取 accessToken 还是因为我想要我创建的自定义客户端的角色 因为
  • 从字符串中删除最后两个单词

    我完全陌生preg replace 但下面的代码从我的字符串中删除了最后一个单词 preg replace W w s W 1 var 我正在尝试修改它 以便它删除最后一个two words 我唯一能想到的就是更换 1 with 2 但这似
  • C读取二进制数并将其转换为Ascii码

    我试图从文件中读取以下二进制文件 01100001 并将其转换为 ascii 代码 97 但是当使用 fread 时我得到了一个非常大的数字 文件 c input txt 仅包含以下行 01100001 数组值的 printf 打印大数字
  • 如何获取作为不同 Drawable 的镜像版本的 Drawable?

    背景 我知道可以创建一个可绘制对象 或位图 的旋转版本 这样 写过关于它的here https stackoverflow com a 21376008 878126 JvmStatic fun getRotateDrawable d Dr
  • 制作或预定义嵌套字典/JSON 的结构 || Python

    输入 我有包含 3 列的 Excel 文件 Excel 文件的格式如下 A C D A C E A F G B H J B H K A F I B L M B L N A F O 我希望根据上面的输入以以下格式制作字典 输出 diction