Присоединение к спискам на основе последних значений списка - PullRequest
0 голосов
/ 30 января 2019

У меня есть несколько списков, подобных этому,

[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 голосов
/ 30 января 2019

Вы можете сделать следующее:

  1. Извлечь последнее значение из всех списков и создать набор из этих значений.
  2. Теперь, когда у вас есть все возможные значениято, что последний элемент в списке может занимать, как вы знаете, длину нового списка.
  3. Теперь переберите исходный список и добавьте их в список с этим конкретным элементом в качестве ключа.
  4. DefaultDict будет действительно удобен для вас в этом случае. Нажмите здесь
0 голосов
/ 30 января 2019
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']]]
0 голосов
/ 30 января 2019

Использование 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']]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...