将词典列表转换为多维词典列表

2024-10-02 18:14:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试转换以下内容:

data = {'title':['doc1','doc2','doc3'], 'name':['test','check'], 'id':['ddi5i'] }

收件人:

[{'title':'doc1', 'name': 'test', 'id': 'ddi5i'},
{'title':'doc2', 'name': 'test', 'id': 'ddi5i'},
{'title':'doc3', 'name': 'test', 'id': 'ddi5i'},
{'title':'doc1', 'name': 'check', 'id': 'ddi5i'},
{'title':'doc2', 'name': 'check', 'id': 'ddi5i'},
{'title':'doc3', 'name': 'check', 'id': 'ddi5i'}]

我尝试过各种选项(列表理解、熊猫和自定义代码),但似乎都不起作用。例如,以下内容:

panda.DataFrame(data).to_dict('list')

抛出错误,因为它尝试映射列表,所以所有列表的长度必须相同。另外,输出只会是一维的,这不是我要找的。你知道吗


Tags: 代码nametestid列表datatitlecheck
1条回答
网友
1楼 · 发布于 2024-10-02 18:14:31

^{}可能是您在这里寻找的内容,它可以应用于数据的值,以获得新dict的适当值分组。像这样的

list(dict(zip(data, ele)) for ele in product(*data.values()))

演示

>>> from itertools import product
>>> list(dict(zip(data, ele)) for ele in product(*data.values()))
[{'id': 'ddi5i', 'name': 'test', 'title': 'doc1'},
 {'id': 'ddi5i', 'name': 'test', 'title': 'doc2'},
 {'id': 'ddi5i', 'name': 'test', 'title': 'doc3'},
 {'id': 'ddi5i', 'name': 'check', 'title': 'doc1'},
 {'id': 'ddi5i', 'name': 'check', 'title': 'doc2'},
 {'id': 'ddi5i', 'name': 'check', 'title': 'doc3'}]

很明显,一旦看到

>>> list(product(*data.values()))
[('test', 'doc1', 'ddi5i'),
 ('test', 'doc2', 'ddi5i'),
 ('test', 'doc3', 'ddi5i'),
 ('check', 'doc1', 'ddi5i'),
 ('check', 'doc2', 'ddi5i'),
 ('check', 'doc3', 'ddi5i')]

现在只需要用原来的键压缩回dict。你知道吗

相关问题 更多 >