所以我試圖獲得像這樣的字典結果:{'foo': ({'key': 'value'}, {'key': 'value1'})}到目前為止,我只能使用以下代碼實現此結果:maindict = {}dict1 = {'key': 'value'}dict2 = {'key': 'value1'}maindict['foo'] = dict1, dict2print(maindict)但我不能在 for 循環中使用它。嘗試了 update() 字典函數,它只是覆蓋了字典。有辦法解決嗎?編輯好的,伙計們,這是原始查詢。查詢返回此:現在在 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(產品類別)在查詢中已重復多次。我想減少這種重復。我想要每個不同類別都有一本字典,并通過嵌套字典對產品及其類別下的信息進行排序。
1 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
您可以使用collections.defaultdict收集列表中的行,并按類別名稱分組。
import collections
maindict = 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為您處理這件事。
添加回答
舉報
0/150
提交
取消