gpt4 book ai didi

python - 从嵌套列表中获取单个值

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:27 24 4
gpt4 key购买 nike

我目前正在尝试查找多个(~580).csv 文件之间的相似之处。我想要执行此操作的方式如下所示:

  1. 将所有文件放入存储在变量中的列表中
  2. 逐个打开每个文件
  3. 拆分每个文件,使每一行都是一个列表
  4. 从打开的文件中获取 header 和数据,并将它们分别存储在各自的变量中( header 和文件列表)
  5. 使代表文件的子列表(?)中的每个值都是唯一的。
  6. 创建一个循环,将每个文件与文件列表进行比较
  7. 如果第 6 步找到与文件相似的值,则打印出文件名 + 值

文件列表(已完成第 4 步)如下所示:

[['00000000B847912E,,1,1,1,1,1,1,1,1,1,1,ALG0,,1,1,1,1,1,1,1,1,1,1,<>Z*,,0,1,AUT-ANALYSE,0,0,1,25.10.2017, 09:38:42,0,0,1,3,1,1,1,1,1,1,1,1,0,0', ''], ['00000000B75B90E6,...

我陷入了第 5 步。知道如何完成该步骤吗?

当前代码如下所示:

from os import listdir, chdir
path = (r'C:\...')
chdir(path)
files = [f for f in listdir(path)]

class Dataset():

def __init__(self, files):
self.files = files

def openfiles(self):
self.filelist = []
self.headers = []
for file in self.files:
if file.lower().endswith('.txt'):
with open(file, 'r') as x:
x = x.read()
x = x.split('\n')
#y = [line.split(',') for line in x]
header = x[0]
data = x[1:]
self.filelist.append(data)
self.headers.append(header)

return self.filelist

def uniquevalues(self):
last = object()
self.uniquefilelist = []
self.openfiles()
for file in self.filelist:
for line in file:
for value in line:
if value == last:
continue

self.uniquefilelist.append(item)
last = item



return self.uniquefilelist

编辑所需的输出:如果我采用之前显示的列表,所需的输出将如下所示:

[['00000000B847912E,1,ALG0,<>Z*,0,AUT-ANALYSE,25.10.2017, 09:38:42,3,''], ['00000000B75B90E6,...

编辑2:编辑帖子。在 openfiles() 中注释掉 y ,因为它为文件中的每一行创建一个新列表。我认为这对我想要的结果没有帮助

编辑 3 个答案 Novak:我把它放在这样的代码中:

def uniquevalues(self):
self.uniquelist = []
self.openfiles()
for file in self.filelist:
file = list(set(file))
self.uniquelist.append(file)

return self.uniquelist

输出仍然不是唯一的+它在每个列表的开头添加“”:

[['','00000000B847912E,,1,1,1,1,1,1,1,1,1,1,ALG0,,1,1,1,1,1,1,1,1,1,1,<>Z*,,0,1,AUT-ANALYSE,0,0,1,25.10.2017, 09:38:42,0,0,1,3,1,1,1,1,1,1,1,1,0,0'], ['', '00000000B75B90EB,...

编辑4:我写的函数:

def notonestring(self):
self.openfiles()
self.useddata = []
for i in self.filelist:
l = i.split(',')
self.useddata.append(l)

return self.useddata

输入是第 4 步中的列表

编辑5:代码:

for i in filelist:
for j in range(len(i)):
l = i[j].split(',')
useddata.append(l)

输出(文件 2):print(useddata[1])

['00000000B75B90E7', '2', '12.04.2017 08:48:00', '01.01.1754 10:48:26', 'LFR\\H.SIEPEL', '156', '62001', '1', '14', '15', 'Field1=0(ABO)', '1', 'ABO', '0', '', '0', '', '1', '0', 'Lefier']

一行。它应该是 7。它现在也从第二行开始,而不是第一行。

最佳答案

你可以这样写:

step_5_list = []
for i in step_4_list:
for j in i:
l = list(set(i))
step_5_list.append(l)

这是有效的,因为集合是一种仅保留唯一元素的数据结构。因此,您将列表转换为集合,它仅保留唯一元素,然后将其返回到列表并追加到结果列表中。

此外,我发现每个子列表都以 ' 开头和结尾。这意味着您有一个由一个字符串组成的列表。为了获取列表,您应该执行以下操作:

res = []
for i in step_4_sublist:
l = i.split(',')
res.append(l)

在此之后,您应该执行我之前编写的部分。

希望这对您有帮助。如果还是不清楚,可以在评论里问mi:)

关于python - 从嵌套列表中获取单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53153172/

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