根据列表中的项目删除重复的嵌套列表
remove duplicate nested list based on item in list
我有一个 CSV 文件,每次更新数据时我指的是行.. 现在有两件事我想做但做不到。
如何根据此删除重复列表
输入:
[name , age , school]
[jack, 76, oxford ],
[march , 32, cfr],
[bee, 43, oi],
[jack ,15, iuy]
输出:
[name , age , school],
[jack, 76, oxford ],
[march , 32, cfr],
[bee, 43, oi]
注意:set(list) 不会对我的情况做任何事情
如您所见,第二个杰克没有添加到列表中_这就是我想要的
和(第二件事)现在当我收到新行时它会检查名称是否存在,如果存在则不会添加新行,否则它将添加
all_list = []
#beforeUpdating
for j in all_list:
if j == csvlist[0] #considering all names are on index - 1:
#cancel upload
break
#AfterUpdating
for i in csvlist:
all_list.append(i)
我可以为您提供这个,因为您还没有发布您的代码。希望这能给你一个想法。
- 利用
set
跟踪添加的名称
- 遍历列表项:
2.1.如果未添加当前名称
2.2.添加当前项目
2.3.更新集
original_list = [['name', 'age', 'school'],
['jack', '76', 'oxford '],
['march', '32', 'cfr'],
['bee', '43', 'oi'],
['jack', '15', 'iuy']]
added_names = set()
filtered_list = []
for item in original_list:
current_name = item[0]
if current_name not in added_names:
filtered_list.append(item)
added_names.add(current_name)
print(filtered_list)
输出:
['name', 'age', 'school'],
['jack', '76', 'oxford '],
['march', '32', 'cfr'],
['bee', '43', 'oi']
要更新,只需检查名称是否已存在于集合中。
第一个 Csv 文件包含此值:
duplicated = [ ['name' , 'age' , 'school'],
['jack', 76, 'oxford' ],
['march' , 32, 'cfr'],
['bee', 43, 'oi'],
['jack' ,15, 'iuy'],
['name' , 'age' , 'school']
]
当你执行这段代码时
#!/usr/bin/python3.8.2
import csv
duplicated = []
names = []
clear = []
with open('python.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
duplicated.append(row)
for i in duplicated:
if i[0] not in names :
names.append(i[0])
for i in duplicated:
if i[0] in names and i not in clear :
clear.append(i)
names.remove(i[0])
for i in clear:
print(i)
输出应该是:
['nom', 'age', 'scholl']
['jack', '76', 'oxford']
['march', '32', 'cfr']
['bee', '43', 'oi']
['jack', '15', 'iuy']``
这就是你想要的:)
我有一个 CSV 文件,每次更新数据时我指的是行.. 现在有两件事我想做但做不到。 如何根据此删除重复列表
输入:
[name , age , school]
[jack, 76, oxford ],
[march , 32, cfr],
[bee, 43, oi],
[jack ,15, iuy]
输出:
[name , age , school],
[jack, 76, oxford ],
[march , 32, cfr],
[bee, 43, oi]
注意:set(list) 不会对我的情况做任何事情
如您所见,第二个杰克没有添加到列表中_这就是我想要的
和(第二件事)现在当我收到新行时它会检查名称是否存在,如果存在则不会添加新行,否则它将添加
all_list = []
#beforeUpdating
for j in all_list:
if j == csvlist[0] #considering all names are on index - 1:
#cancel upload
break
#AfterUpdating
for i in csvlist:
all_list.append(i)
我可以为您提供这个,因为您还没有发布您的代码。希望这能给你一个想法。
- 利用
set
跟踪添加的名称 - 遍历列表项:
2.1.如果未添加当前名称
2.2.添加当前项目
2.3.更新集
original_list = [['name', 'age', 'school'],
['jack', '76', 'oxford '],
['march', '32', 'cfr'],
['bee', '43', 'oi'],
['jack', '15', 'iuy']]
added_names = set()
filtered_list = []
for item in original_list:
current_name = item[0]
if current_name not in added_names:
filtered_list.append(item)
added_names.add(current_name)
print(filtered_list)
输出:
['name', 'age', 'school'],
['jack', '76', 'oxford '],
['march', '32', 'cfr'],
['bee', '43', 'oi']
要更新,只需检查名称是否已存在于集合中。
第一个 Csv 文件包含此值:
duplicated = [ ['name' , 'age' , 'school'],
['jack', 76, 'oxford' ],
['march' , 32, 'cfr'],
['bee', 43, 'oi'],
['jack' ,15, 'iuy'],
['name' , 'age' , 'school']
]
当你执行这段代码时
#!/usr/bin/python3.8.2
import csv
duplicated = []
names = []
clear = []
with open('python.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
duplicated.append(row)
for i in duplicated:
if i[0] not in names :
names.append(i[0])
for i in duplicated:
if i[0] in names and i not in clear :
clear.append(i)
names.remove(i[0])
for i in clear:
print(i)
输出应该是:
['nom', 'age', 'scholl']
['jack', '76', 'oxford']
['march', '32', 'cfr']
['bee', '43', 'oi']
['jack', '15', 'iuy']``
这就是你想要的:)