如何将 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 字典转换为所需的格式的主要内容,如果未能解决你的问题,请参考以下文章