Python 将重复类别名称的字典从 SQL 查询重新排列为单个类别名称作为键

所以我试图获得像这样的字典结果:


{'foo': ({'key': 'value'}, {'key': 'value1'})}


到目前为止,我只能使用以下代码实现此结果:


maindict = {}

dict1 = {'key': 'value'}

dict2 = {'key': 'value1'}


maindict['foo'] = dict1, dict2


print(maindict)

但我不能在 for 循环中使用它。尝试了 update() 字典函数,它只是覆盖了字典。有办法解决吗?


编辑


好的,伙计们,这是原始查询。查询返回此:

https://img4.mukewang.com/64e460620001830e04410155.jpg

现在在 python 中,这就是 sql 查询的样子:

[{'id': 1, 'url': '/static/images/dresses/td1.jpg', 'price': 3000, 'name': 'product1', 'catname': 'Linen', 'catid' : 1}, {'id': 4, 'url': '/static/images/dresses/td4.jpg', 'price': 5000, 'name': 'product4', 'catname': 'Linen', 'catid': 1}, {'id': 2, 'url': '/static/images/dresses/td2.jpg', 'price': 2500, 'name': 'product2', 'catname': '雪纺', 'catid': 2}, {'id': 3, 'url': '/static/images/dresses/td3.jpg', 'price': 4000, 'name': 'product3', 'catname ': '雪纺', 'catid': 2}, {'id': 5, 'url': '/static/images/dresses/td5.jpg','价格': 6000, '名称': '产品6', 'catname': 'Chiffron', 'catid': 2}]

我试图在 for 循环中重新排列这个字典列表,每个产品及其信息作为值都嵌套在单个键中,其中键是 catname(产品的类别),例如对于 Linen 类别,我希望它重新排列为: {'亚麻布': ({'名称': '产品1', '价格': 'xxx'....}, {'名称': '产品4', '价格': 'xxx'}...)对于 Chiffron 或查询中的任何类别也是如此。这就是我想要对 python 字典中的查询行进行排序的方式。正如您所看到的,catname(产品类别)在查询中已重复多次。我想减少这种重复。我想要每个不同类别都有一本字典,并通过嵌套字典对产品及其类别下的信息进行排序。


慕哥9229398
浏览 1577回答 1
1回答

慕村9548890

您可以使用collections.defaultdict收集列表中的行,并按类别名称分组。import collectionsmaindict = collections.defaultdict(list)for row in rows:    maindict[row['catname']].append(row)for value in maindict['Linen']:    print(value){'id': 1, 'url': '/static/images/dresses/td1.jpg', 'price': 3000, 'name': 'product1', 'catname': 'Linen', 'catid': 1}{'id': 4, 'url': '/static/images/dresses/td4.jpg', 'price': 5000, 'name': 'product4', 'catname': 'Linen', 'catid': 1}您可以对普通的 执行相同的操作dict,但是每次遇到新键时都需要创建初始列表;defaultdict为您处理这件事。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python