根据列表的最后一个值加入列表

时间:2019-01-30 04:59:07

标签: python list join

我有多个这样的列表

[100,200,100,1,ASD1]
[200,350,150,2,ASD2]
[300,400,120,3,ASD1]
[400,500,130,4,ASD2]

我想根据列表的最后一个值加入列表。

[[100,200,100,1,ASD1],[300,400,120,3,ASD1]]
[[200,350,150,2,ASD2],[400,500,130,4,ASD2]]

如何加入这样的列表。如果有人知道请帮助我。

3 个答案:

答案 0 :(得分:3)

使用defaultdict个列表:

from collections import defaultdict

data = [[100,200,100,1,'ASD1'],
        [200,350,150,2,'ASD2'],
        [300,400,120,3,'ASD1'],
        [400,500,130,4,'ASD2']]

dd = defaultdict(list)
for item in data:
    dd[item[-1]].append(item)

res = list(dd.values())

print(res)
# [[[100, 200, 100, 1, 'ASD1'], [300, 400, 120, 3, 'ASD1']],
#  [[200, 350, 150, 2, 'ASD2'], [400, 500, 130, 4, 'ASD2']]]

答案 1 :(得分:2)

您可以执行以下操作:

  1. 提取所有列表的最后一个值,并根据这些值进行设置。
  2. 现在,有了所有可能的值,列表中的最后一个元素就可以占用新列表的长度。
  3. 现在,遍历原始列表,然后以该特定元素为键将它们附加到列表中。
  4. 在这种情况下,
  5. DefaultDict非常适合您。 Click Here

答案 2 :(得分:0)

mydict = {}

data = [[100,200,100,1,'ASD1'],
    [200,350,150,2,'ASD2'],
    [300,400,120,3,'ASD1'],
    [400,500,130,4,'ASD2']]

for i in data:
   if i[-1] in mydict:
      mydict[i[-1]].append(i)
   else:
      mydict[i[-1]] = [i]
mydict.values()
#for python 3
#list(mydict.values())

#OUTPUT:[[[100, 200, 100, 1, 'ASD1'], [300, 400, 120, 3, 'ASD1']], [[200, 350, 
 #150,2,'ASD2'], [400, 500, 130, 4, 'ASD2']]]