在 list

问题描述

我在列表中有一个列表,想在索引 [1] 上找到具有相同值的所有列表。 list 中的列表始终具有相同的 len。

list = [['10302','118073','So,07.02.2021','302'],['10301','118074','301'],['10032','118075','所以,'32'],'118076',' 118077','118078','118079','So 07.02.2021','118080',['10411','118081',07.02.2021' 411'],['10402','118082','402'],['10302','118083',14.02.2021',[' 10301','118084','118085',6'1','118087','118088',14.02. 2021','118089','118090','32' ],['10034','118091','34'],'118092','411'],21.02.2021','118093',['10005','118095','Mo,15.02.2021','5'],['10314','118096','314'],['10313','118097','313'],['10312','118098','312'],['10035',118099','35'],['10030','118100','30'],'118101','So 21.02.2021','118102','118103',21.02,'202. 411'],'118104',['10214','118105',28.02.2021','214'],[' 10005','118106','118107',['10318','10'1,'118109','118110',28. 2021','118111',['10311','118112','3021','301'] ],'118113','118114','118115','118116',28.02.20 21','118117','118118','118119','118120',['10358','118121','358'],['10350','118122','350'],['10352','11812'所以,28.02.2021','352'],['10359','118124','359'],['10412','118125',20212'。,'412'],'118126',['10408','118127','408'] ['10402','118128',['10801','118129','801'],['10818',118130','818'],['10817','118131','817']]

result = [['10411','118092','411']

解决方法

我喜欢用来解决这类分组问题的习惯用法是使用 dictlists,其中键是列表的相关元素,值是列表本身。在这种情况下,我们的键是每个元素的 lst[1]

bigList = [['10302','118073','So,07.02.2021','302'],['10301','118074','301'],['10032','118075','32'],'118076','118077','118078','118079','118080',['10411','118081','411'],['10402','118082','402'],['10302','118083',14.02.2021','118084','118085','118086','118087','118088','118089','118090',['10034','118091','34'],'118092',21.02.2021','118093',['10005','118095','Mo,15.02.2021','5'],['10314','118096','314'],['10313','118097','313'],['10312','118098','312'],['10035','118099','35'],['10030','118100','30'],'118101','118102','118103','118104',['10214','118105',28.02.2021','214'],'118106','118107','118108','118109','118110','118111',['10311','118112','311'],'118113','118114','118115','118116','118117','118118','118119','118120',['10358','118121','358'],['10350','118122','350'],['10352','118123','352'],['10359','118124','359'],['10412','118125','412'],'118126',['10408','118127','408'],'118128',['10801','118129','801'],['10818','118130','818'],['10817','118131','817']]

lists = {}
for lst in bigList:
    lists.setdefault(lst[1],[])
    lists[lst[1]].append(lst)

result = lists['118092']
# [['10411','411']]

一旦我们将大列表排序为一个 list-of-lists-sharing-their-second-element 的字典,我们就可以挑选出一个特定的带有第二个元素的列表(例如 lists['118092']索引 1) 处的所有列表,或通过 list(lists.values()) 获取按索引 1 处的值分组的三重嵌套列表。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...