基于列表中的项删除重复的嵌套列表

2024-10-02 22:35:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)对我的案例没有任何作用

正如你所看到的,第二个杰克没有加入名单,这就是我想要的

(第二件事)当我收到新行时,它如何检查是否有一个名称,如果没有,它将不会添加新行,否则它将添加


Tags: 文件csv数据name列表age两件事bee
3条回答
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)

我可以提供给你这个,因为你还没有发布你的代码。希望这能给你一个想法

  1. 利用set跟踪添加的名称
  2. 在列表项上循环:
    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']``

这就是你想要的:)

相关问题 更多 >