为了账号安全,请及时绑定邮箱和手机立即绑定

如果列表中的第一个元素重复并且第二个元素在列表系列中最低,则删除列表中的列表

如果列表中的第一个元素重复并且第二个元素在列表系列中最低,则删除列表中的列表

Smart猫小萌 2021-12-09 18:33:29
我有一份清单。每个列表具有相同数量的元素。如果新列表基于所有列表具有的第 n 个元素中的数字键取代旧列表,我想删除整个列表。此数字键是从 1 开始以 1 为增量递增的。需要最高键。all = [[123, 1],[456, 1],[789, 1],[123,2],[456, 2],[789,1]]每个列表中的最后一个元素是关键:2 取代 1 等......所需的输出是:[[123,2],[456,2],[789,1]]
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

for x in list(all):

    for y in list(all):

        if y[0] == x[0] and y[1] <= x[1] and y is not x:

            all.remove(y)


查看完整回答
反对 回复 2021-12-09
?
HUWWW

TA贡献1874条经验 获得超12个赞

像字典这样的东西在这里会更好用吗?


all = [[123, 1],[456, 1],[789, 1],[123,2],[456, 2],[789,1]]


as_dict = {}

for item in all:

    if not (item[0] in as_dict and as_dict[item[0]] > item[1]):

        as_dict[item[0]] = item[1]


print(as_dict)

# Returns {123: 2, 456: 2, 789: 1}

事实上,如果您知道每对中的第二个数字永远不会减少(例如,您将不会[123,0]在 之后的列表中看到类似的内容[123,2]),那么只需将列表转换为字典 就dict()可以完成同样的事情。然后,您可以根据需要将其转换回列表。


d = dict(all)  # This is {123: 2, 456: 2, 789: 1}

newlist = [ [k,d[k]] for k in d] # This is [[123, 2], [456, 2], [789, 1]]


查看完整回答
反对 回复 2021-12-09
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号