Python 使用嵌套循环创建嵌套列表

Python 使用嵌套循环创建嵌套列表,python,list,loops,nested,Python,List,Loops,Nested,我正在努力完成的更大范围就是这个。我有一个Windows目录,它可以包含不同数量的.csv文件。这些文件是作为PLC的测试结果生成的。它们通过文件名进行区分。每个测试周期生成2个.csv文件。第一个文件名包含一个订单号、一个-分隔符和字符串UP。第二个文件相同,只是字符串替换为DOWN 示例文件名: 1234567890-UP或1234567890-DOWN 目录示例: 1234567890-UP.csv 1234567890-DOWN.csv 2000005001-UP.csv 2000005

我正在努力完成的更大范围就是这个。我有一个
Windows目录
,它可以包含不同数量的
.csv
文件。这些文件是作为PLC的测试结果生成的。它们通过文件名进行区分。每个测试周期生成2个
.csv
文件。第一个文件名包含一个订单号、一个
-
分隔符和字符串
UP
。第二个文件相同,只是字符串替换为
DOWN

示例文件名:
1234567890-UP
1234567890-DOWN

目录示例:
1234567890-UP.csv

1234567890-DOWN.csv

2000005001-UP.csv

2000005001-DOWN.csv

我正在尝试编写一个脚本,循环遍历目录中的所有文件名,并将它们存储在列表中。然后从元素中删除除订单号以外的所有内容。然后删除重复的元素。使用上面的示例目录,我将得到一个类似于
[12345678902000005001]
的列表。我已经完成了这么多。

现在我要做的是循环遍历原始文件名列表,并将它们与我的新列表进行比较,以创建一个嵌套列表,该列表根据文件的顺序号分隔文件。使用相同的示例目录,列表如下所示:
[[1234567890-UP.csv,1234567890-DOWN.csv],[2000005001-UP.csv,2000005001-DOWN.csv]


最后,我想循环浏览这个列表,并根据列表索引将
.csv
文件合并在一起

也许有一种更简单的方法可以帮我省去很多麻烦,但我忽略了这一点

我当前使用嵌套for循环填充嵌套列表的代码如下所示

    nestedlist=[]
    for x in range(len(filenamelist)):
        for y in range(len(filteredlist)):
            if filteredlist[y] in filenamelist[x]:
                nestedlist[y].append(filenamelist[x]

这将返回一个错误
索引超出范围
。这是因为从未定义
nestedlist
的大小。我真的不知道怎么做,或者最好的方法是什么?

您应该直接附加到
嵌套列表,而不是
嵌套列表[y]
。空列表中没有索引
y

你也可以这样简化;
范围是不必要的,因为您可以直接在列表上循环:

nestedlist=[]
   for x in filenamelist:
      for y in filteredlist:
         if y in x:
            nestedlist.append(x)

这可以用更简单的方法实现。假设您将目录的文件列表设置为-

files = [1234567890-UP.csv,1234567890-DOWN.csv,2000005001-UP.csv,2000005001-DOWN.csv]
您可以迭代这个,创建一个订单号到实际文件名的映射

filemap = {}
for file in files:
  order_number = re.compile('(\d*)-(\w*).csv').match(file).groups()[0]
  print(order_number)
  files = filemap.get(order_number, [])
  files.append(file)
  filemap[order_number] = files
应该是这样的

{'1234567890': ['1234567890-UP.csv', '1234567890-DOWN.csv'],
 '2000005001': ['2000005001-UP.csv', '2000005001-DOWN.csv']}

现在,您可以查找订单号,并在需要时进行合并

,因此您希望迭代初始列表并创建一个新的成对嵌套列表??这解决了我的问题。也给了我学习正则表达式的机会。谢谢