如何将 python 字典转换为所需的格式

Posted

技术标签:

【中文标题】如何将 python 字典转换为所需的格式【英文标题】:How to transform a python dictionary to a desired format 【发布时间】:2018-12-24 10:52:00 【问题描述】:

我有以下字典,我在 pandas 数据帧上应用 to_dict() 方法时得到的。


   'name' : 
      0: 'abc',
      1: 'xyz'
    ,
   'email': 
     0: 'abc@abc.com',
     1: 'xyz@xyz.com',
   ,
   'category': 
     0: 'category 1',
     1: 'category 2', 
   

如何将其转换为以下结构?

[
  
    'name': 'abc',
    'email' : 'abc@abc.com',
    'category': 'category 1',  
  ,
  
    'name': 'xyz',
    'email' : 'xyz@xyz.com',
    'category': 'category 2',  
  
]

我尝试应用for 循环的许多变体,但作为虚假代码出现,如果有人可以提供帮助或指向一些链接,那就太好了,python 新手在这里 :|

编辑:将所需的结构更改为字典列表,因为字典不是哈希,

【问题讨论】:

这似乎是一个很好的练习来了解更多关于 python 的知识!我建议尝试将数据拆分为一种您可以将其重建为所需格式的方式。因此,也许列出所有名称值、另一个电子邮件值和第三个类别值。组织好之后,获取名称、电子邮件和类别列表,并将它们转换为字典键:值对。也许这会帮助你完成任务。我只是在想我最初是如何尝试解决这个问题的。祝你好运! 即使我也想这样做...谢谢@J0hn 作为将来的注释,您通常应该包括您的尝试示例,即使它们失败了。大多数情况下,它可以帮助其他人产生好的答案。 【参考方案1】:

您显示的目标结构是一组字典。由于 dicts 不可散列,因此无法创建。

相反,您可能想要一个字典列表。

result = [
     k: yourdict[k][n] for k in yourdict for n in sorted(yourdict['name'])
]

测试:

[
    'category': 'category 1', 'email': 'abc@abc.com', 'name': 'abc',
    'category': 'category 2', 'email': 'xyz@xyz.com', 'name': 'xyz'
]

【讨论】:

太棒了,它就像一个魅力,如果你能添加一点关于它是如何工作的,它对像我这样的其他人也会很好 这只是 python 列表推导(和字典推导,它对 dicts 的工作方式相同。)请参阅 python 官方基础教程,此处为第 5.1.3 章 docs.python.org/3/tutorial/… 和此处为第 5.5 章 docs.python.org/3/tutorial/datastructures.html#dictionaries @ShobiPP 【参考方案2】:

您可以在将数据框转换为字典之前对其进行转置。这将生成一个字典字典,其中每个键都是来自原始数据帧的索引值。

import pandas as pd
pd.DataFrame(
   'name' : 
      0: 'abc',
      1: 'xyz'
     ,
   'email': 
     0: 'abc@abc.com',
     1: 'xyz@xyz.com',
   ,
   'category': 
     0: 'category 1',
     1: 'category 2', 
   
).T.to_dict()

输出:

0: 'name': 'abc', 'email': 'abc@abc.com', 'category': 'category 1',
 1: 'name': 'xyz', 'email': 'xyz@xyz.com', 'category': 'category 2'

【讨论】:

【参考方案3】:

您可以将'records' 作为所需方向传递给to_dict()

df.to_dict('records')

默认方向'dict' 产生类似于column -> index -> value 的输出,如您的示例所示,其中'records' 类似[column -> value, … , column -> value] 的列表,这是您想要的输出。

【讨论】:

以上是关于如何将 python 字典转换为所需的格式的主要内容,如果未能解决你的问题,请参考以下文章

将数据帧转换为所需的字典格式

如何查询/将数据转换为所需的格式

如何将熊猫系列转换为所需的 JSON 格式?

我应该如何在 Spring Boot 中配置 httpMessageConverters 以将消息转换为所需的格式?

将python中的LIST转换为所需的输出

如何将此混合行/列表转换为所需的输出。 (Oracle SQL/发行版:Ora12c)