gpt4 book ai didi

python - 删除多个列表中列表的唯一项目

转载 作者:行者123 更新时间:2023-12-01 01:39:36 26 4
gpt4 key购买 nike

我有这些正确的列表,需要更正的场景位于问题末尾的解释部分。

ps
['C:\\Users\\user\\Desktop\\sa\\43001\\PST\\PST.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\PST\\PST.shp']

db
['C:\\Users\\user\\Desktop\\sa\\43001\\DBOUND\\DBOUND.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\DBOUND\\DBOUND.shp']

我想比较这些列表,如果其中一个具有唯一的项目,则 [-3] 位置的数字 43001 是唯一的,则应删除该项目。最后只应保留具有相同数量项目的对。

我该怎么做?

我的代码:

for i,v in list(zip(ps,db)):
if i.split("\\")[-3] not in v.split("\\")[-3]:
ps.remove(i)

说明

如果列表是这样的:

ps
['C:\\Users\\user\\Desktop\\sa\\43001\\PST\\PST.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\PST\\PST.shp']

db
['C:\\Users\\user\\Desktop\\sa\\43001\\DBOUND\\DBOUND.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\DBOUND\\DBOUND.shp',
'C:\\Users\\user\\Desktop\\sa\\43009\\DBOUND\\DBOUND.shp']

应该删除带有 43009 的项目,因为它不存在于 ps 列表中,最终列表将如下所示:

ps
['C:\\Users\\user\\Desktop\\sa\\43001\\PST\\PST.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\PST\\PST.shp']

db
['C:\\Users\\user\\Desktop\\sa\\43001\\DBOUND\\DBOUND.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\DBOUND\\DBOUND.shp']

最佳答案

ps = ['C:\\Users\\user\\Desktop\\sa\\43001\\PST\\PST.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\PST\\PST.shp']

db = ['C:\\Users\\user\\Desktop\\sa\\43001\\DBOUND\\DBOUND.shp',
'C:\\Users\\user\\Desktop\\sa\\43003\\DBOUND\\DBOUND.shp',
'C:\\Users\\user\\Desktop\\sa\\43009\\DBOUND\\DBOUND.shp']

filtered_db = [i for i in db if i.split('\\')[-3] in {j.split('\\')[-3] for j in ps}]
print(filtered_db)
# ['C:\\Users\\user\\Desktop\\sa\\43001\\DBOUND\\DBOUND.shp',
# 'C:\\Users\\user\\Desktop\\sa\\43003\\DBOUND\\DBOUND.shp']


filtered_ps = [i for i in ps if i.split('\\')[-3] in {j.split('\\')[-3] for j in db}]
print(filtered_ps)
# ['C:\\Users\\user\\Desktop\\sa\\43001\\PST\\PST.shp',
# 'C:\\Users\\user\\Desktop\\sa\\43003\\PST\\PST.shp']

关于python - 删除多个列表中列表的唯一项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52041448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com