l=[['a', 'random_str', 4], ['b', 'random_str2', 5], ['b', 'random_str3', 7]]
所以我有一个像这样的列表,我想遍历这个列表以检查每个子列表的第零个索引是否彼此相等,因此检查每个子列表的任何第零个索引是否等于另一个,然后如果两个of 或 more 类似,检查子列表中的第二个索引,仅保留具有最低 int 值的子列表,并删除所有其他子列表。
所以输出应该是这样的
[['a', 'random_str', 4], ['b', 'random_str2', 5]]
因此它会删除第二个索引中具有较高 int 的子列表
我在想这样的事情
for i in l:
for k in i:
if k[0]=i[0][0]:
# then I dont know
最佳答案
它可以通过 pandas
、sort_values
和 groupby
来实现:
import pandas as pd
l=[['a', 'random_str', 4], ['b', 'random_str2', 5], ['b', 'random_str3', 7]]
#create dataframe from list of list
df = pd.DataFrame(l)
#sort column based on third column / index = 2
df = df.sort_values(by=2)
#groupby first column and only take first entry which is lowest int after sort.
df = df.groupby(0).head(1)
#put back to list of list
df = df.values.tolist()
print(df)
打印出来
[['a', 'random_str', 4], ['b', 'random_str2', 5]]
关于python - 比较列表列表的元素并删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982795/