gpt4 book ai didi

django - 按其中一个键的值拆分字典(将其保存为单个数据)

转载 作者:行者123 更新时间:2023-11-29 12:24:08 24 4
gpt4 key购买 nike

My data and issue are similar as this, but it's not the same

如何根据其中一个键的值拆分字典并将其保存为 PostgreSQL 中的单个数据?我有一个字典如下:

data = {
"id": [1,2,3,4,5,6,7,8],
"info": ["info1"],# one or more than one item, number >= 1
"number": [1],# one or more than one item, the numbers are the same as info's
}

我想通过 id 将其拆分为一个,保留各自的信息和编号,并将其作为单个数据保存在 PostgreSQL 中,如下所示:

 {'id': 1, 'info': 'info1', 'number': 1},
{'id': 2, 'info': 'info1', 'number': 1},
{'id': 3, 'info': 'info1', 'number': 1},
{'id': 4, 'info': 'info1', 'number': 1},
{'id': 5, 'info': 'info1', 'number': 1},
{'id': 6, 'info': 'info1', 'number': 1},
{'id': 7, 'info': 'info1', 'number': 1},
{'id': 8, 'info': 'info1', 'number': 1},

如果数据的"info"有两个以上的info,"info":["info1", "info2"], "number" 也应该是 [1, 2]。那么data1应该如下:

 {'id': 1, 'info': 'info1', 'number': 1},
{'id': 1, 'info': 'info2', 'number': 2},
{'id': 2, 'info': 'info1', 'number': 1},
{'id': 2, 'info': 'info2', 'number': 2},
{'id': 3, 'info': 'info1', 'number': 1},
{'id': 3, 'info': 'info2', 'number': 2},
{'id': 4, 'info': 'info1', 'number': 1},
{'id': 4, 'info': 'info2', 'number': 2},
{'id': 5, 'info': 'info1', 'number': 1},
{'id': 5, 'info': 'info2', 'number': 2},
{'id': 6, 'info': 'info1', 'number': 1},
{'id': 6, 'info': 'info2', 'number': 2},
{'id': 7, 'info': 'info1', 'number': 1},
{'id': 7, 'info': 'info2', 'number': 2},
{'id': 8, 'info': 'info1', 'number': 1},
{'id': 8, 'info': 'info2', 'number': 2},

什么是 Pythonic 的实现方式? Django 的方式更好!提前致谢。

最佳答案

你应该使用 itertools 的产品 https://docs.python.org/3/library/itertools.html#itertools.product

id_ = data['id']
info = data['info']
number = data['number']
info_and_number = zip(info, number)
changed_data = product(id_, info_and_number)

dict_data = [
{
'id': id_,
'info': info,
'number': number
} for id_, (info, number) in changed_data]

关于django - 按其中一个键的值拆分字典(将其保存为单个数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com