将列表写入textfi时格式化输出

2024-09-30 22:12:39 发布

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

我有一个列表,如下所示:

dupe = [['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'apa.txt'], ['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'knark.txt'], ['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', 'apa2.txt'], ['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', 'jude.txt']]

我用一个非常基本的函数()将它写入一个文件:

^{pr2}$

文件中的输出如下所示:

95d1543adea47e88923c3d4ad56e9f65c2b40c76 ron\c apa.txt
95d1543adea47e88923c3d4ad56e9f65c2b40c76 ron\c knark.txt
b5cc17d3a35877ca8b76f0b2e07497039c250696 ron\a apa2.txt
b5cc17d3a35877ca8b76f0b2e07497039c250696 ron\a jude.txt

但是,如何在复制.txt文件如下所示:

95d1543adea47e88923c3d4ad56e9f65c2b40c76 ron\c apa.txt, knark.txt
b5cc17d3a35877ca8b76f0b2e07497039c250696 ron\a apa2.txt, jude.txt

Tags: 文件函数txt列表dupeapapr2ron
3条回答

我想你最后一个问题没有解决你的问题?在

与其将具有重复ID和目录的每个列表放在单独的列表中,不如让列表的file元素成为另一个子列表,其中包含具有相同ID和目录的所有文件。在

所以dupe应该是这样的:

dupe = [['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', ['apa.txt','knark.txt']],
['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', ['apa2.txt','jude.txt']]

那么您的打印循环可能类似于:

^{pr2}$
from collections import defaultdict

dupe = [
  ['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'apa.txt'],
  ['95d1543adea47e88923c3d4ad56e9f65c2b40c76', 'ron\\c', 'knark.txt'],
  ['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', 'apa2.txt'],
  ['b5cc17d3a35877ca8b76f0b2e07497039c250696', 'ron\\a', 'jude.txt'],
]
with open("dupe.txt", "w") as f:
  data = defaultdict(list)
  for hash, dir, fn in dupe:
    data[(hash, dir)].append(fn)
  for hash_dir, fns in data.items():
    f.write("{0[0]} {0[1]} {1}\n".format(hash_dir, ', '.join(fns)))

首先,按“key”(每个数组的前两个元素)将行分组:

dupedict = {}
for a, b, c in dupe:
  dupedict.setdefault((a,b),[]).append(c)

然后打印出来:

^{pr2}$

相关问题 更多 >