【发布时间】:2018-07-31 21:18:41
【问题描述】:
我有一个列表列表
data = [ ['fruit', 'apple', 'v1', 'data 1'],
['fruit', 'apple', 'v2', 'data 2'],
['fruit', 'apple', 'v3', 'data 3'],
['fruit', 'banana', 'v1', 'data 4'],
['fruit', 'banana', 'v2', 'data 5'],
['animal', 'dog', 'v1', 'data 6'] ]
如何根据前 2 列折叠并使用最高 v 的数据?
result = [ ['fruit', 'apple', 'v3', 'data 3'],
['fruit', 'banana', 'v2', 'data 5'],
['animal', 'dog', 'v1', 'data 6'] ]
列表在第一列中排序,但第二列没有。我的解决方案是假设两列都已排序,因此它不起作用,我不知道从哪里开始。
previous = []
result = []
for a, b, c, d in data:
if not all(x in previous for x in [a, b]):
final.append([a, b, c, d])
previous = [a, b, c, d]
else:
if previous[2] < c:
final[-1][2] = c
final[-1][3] = d
previous = [a, b, c, d]
print result
【问题讨论】:
-
列表排序了吗?另外,你试过什么?请展示您解决问题的尝试。
-
列表按第 0 列排序,但第 1 列未排序。起初我认为两者都会被排序,所以我想出了这个解决方案。编辑它。
-
现在第二列没有排序,我真的不知道从哪里开始。
标签: python python-2.7 list pandas