Python中如何解决一道关于列表和字典的问题
原始数据是:
data = [{'a':10,'b':100}, {'a':10,'b':200},
{'a':20,'b':500}, {'a':20,'b':400},
{'a':30,'b':400}]
排序后是:
data = [[{'a':10,'b':100}, {'a':10,'b':200}],
[{'a':20,'b':500}, {'a':20,'b':400}],
[{'a':30,'b':400}]]
Python中如何解决一道关于列表和字典的问题
我无法理解你的问题
我都看懂他想问啥……
,主要是想说明如何提问,才能得到有效的回答。
t = sorted(data, key=(lambda x : (x[‘a’], x[‘b’])))
ret = [[]]
for prv, nxt in zip(t[:-1], t[1:]):
…tmp = ret[-1]
…tmp.append(prv)
…if prv[‘a’]!=nxt[‘a’]:
…ret.append([])
tmp = ret[-1]
tmp.append(t[-1])
很简单啊,一行
print(sorted(data, cmp=lambda x, y: x[‘a’] < y[‘a’] if(x[‘a’] != y[‘a’]) else x[‘b’] < y[‘b’]))
emmm…好像审错题了,那就加一行
s_data = sorted(data, cmp=lambda x, y: x[‘a’] < y[‘a’] if(x[‘a’] != y[‘a’]) else x[‘b’] < y[‘b’])
res = [s_data[i: (i+1)] for i in range((len(s_data) + 1) / 2)]
print(res)
python<br>from itertools import groupby<br>print([list(v) for k,v in groupby(data,lambda x:x['a'])])<br>
data.sort(key = lambda x:(x[‘a’],x[‘b’]))
一行搞定,就是这么简单~
>>> data = [{‘a’:10,‘b’:100}, {‘a’:10,‘b’:200},
{‘a’:20,‘b’:500}, {‘a’:20,‘b’:400},
{‘a’:30,‘b’:400}]
>>> from itertools import groupby
>>> [list(g) for _,g in groupby(data, lambda x:x[‘a’])]
[[{‘a’: 10, ‘b’: 100}, {‘a’: 10, ‘b’: 200}], [{‘a’: 20, ‘b’: 500}, {‘a’: 20, ‘b’: 400}], [{‘a’: 30, ‘b’: 400}]]
>>>
#9 老哥没有分组吗


