Python - добавление всех значений списка вместе, но пропуская строки - PullRequest
0 голосов
/ 20 октября 2018

У меня есть список с несколькими списками в нем.Списки в основном списке содержат как строки, так и целые числа.Список выглядит примерно так:

[['Flugt', 'DNS', '3', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['RaceTobi', '1', 'DNF', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['cayre123', '2', '2', '8', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Thomas222213', '4', '5', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Entity', '6', '1', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['TheBiniz', '3', '4', '6', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['BWOAH STEERING WHEEL', '7', '6', '7', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Blackreverse', '5', '7', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']]

Первый объект в списках - это имя определенного игрока.

Теперь я хочу добавить все целые числа в небольших списках вместе иСортируйте списки с первым с наибольшей суммой, но я не знаю, как это сделать, если он также содержит строки.Кроме того, я хочу, чтобы имя оставалось первой строкой в ​​списке.Данные в списках должны быть в том же порядке, в каком они были в начале, но порядок их размещения в основном списке должен быть равен значению

Надеюсь, это имеет смысл, и кто-то может помочья :) 1008 *

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Вы можете узнать, является ли строка числовой, следующим образом:

"2".isnumeric()
# >>True
"hello".isnumeric()
# >>False

Вы можете создать подсписок из своих внутренних списков, используя списки для выделения только числовых строк

sub_inner_list = [i for i in inner_list if i.isnumeric()]

Вы также можете преобразовать эти записи в целые числа на том же шаге и суммировать их.

sum_sub_inner_list = sum([int(i) for i in inner_list if i.isnumeric()])

Это можно использовать в качестве ключа для сортировки внешнего списка, передавая опцию reversed = True для сортировкипо величине в первую очередь.

my_sorted_list = sorted(full_list, reverse=True, key=lambda inner: sum([int(i) for i in inner if i.isnumeric()]))
0 голосов
/ 20 октября 2018

Используйте sorted с lambda сортировкой по sum из int преобразованных элементов в ваших подсписках, которые удовлетворяют условию isdigit(), используйте reverse=True для самого большого подсписка сначала

lst = sorted(lst, key=lambda x: sum([int(i) for i in x if i.isdigit()]), reverse = True)
# [['BWOAH STEERING WHEEL', '7', '6', '7', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Thomas222213', '4', '5', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Blackreverse', '5', '7', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['TheBiniz', '3', '4', '6', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['cayre123', '2', '2', '8', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Entity', '6', '1', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['Flugt', 'DNS', '3', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['RaceTobi', '1', 'DNF', '3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...