【发布时间】:2016-12-30 15:36:16
【问题描述】:
我有一份详尽的不同类别清单:
myList = [
{'name': 'Sasha', 'category': 'Dog'},
{'name': 'Meow', 'category': 'Cat'},
{'name': 'Bark', 'category': 'Dog'}
]
我希望他们打破并在这个 bigList 中创建一个更小的列表。应该是这样的:
bigList = [
[
{'category': 'Dog', 'name': 'Sasha'},
{'category': 'Dog', 'name': 'Bark'}
],
[
{'category': 'Cat', 'name': 'Meow'}
]
]
这是迭代循环的python逻辑:
bigList = []
prev = ''
for s in myList:
newList = []
if s['category'] != prev:
for m in myList:
if m['category'] == s['category']:
newList.append(m)
bigList.append(newList)
prev = s['category']
这对我来说已经成功了,但我想知道如何优化 for 循环中的上述逻辑以获得更短和更高效的代码。
【问题讨论】:
-
可能更适合CodeReview site。
-
会很快做到的。
-
看看
itertools,特别是groupby
标签: python django list for-loop