繁体   English   中英

Python-将列表的所有值加在一起但跳过字符串

[英]Python - Adding all values of a list together but skipping strings

我有一个列表,里面有多个列表。 主列表中的列表包含字符串和整数。 该列表看起来像这样:

[['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', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']]

列表中的第一个对象是特定播放器的名称。

我现在想将小列表中的所有整数加在一起,并以总和最大的列表排序,但是当它也包含字符串时,我不知道该怎么做。 此外,我希望名称仍然是列表中的第一个字符串。 列表中的数据必须与开始时的顺序相同,但是它们在主列表中的放置顺序必须是按值

我希望这是有道理的,希望有人可以帮助我:)

使用sortedlambda通过排序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', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']]

您可以这样确定字符串是否为数字:

"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()]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM