打印出重复的python
在将列表分为数字和非数字之后,我无法从列表中找出所有重复项。请告知我做错了什么 问题是,如果给我的是两条记录而不是3条记录,下面的引用就会产生结果打印出重复的python,python,python-3.x,Python,Python 3.x,在将列表分为数字和非数字之后,我无法从列表中找出所有重复项。请告知我做错了什么 问题是,如果给我的是两条记录而不是3条记录,下面的引用就会产生结果 for x in good: x = sorted(x) if good.count(x) > 1: good_dups.append(x) Listy.txt-外部数据源 1,3,2,3 2,4,5,6 2,3,1 2,3,1 1,2,3 1,3,4,5 3,,4,5,6 1, 2, 3, 4. ., 123, 213, 1
for x in good:
x = sorted(x)
if good.count(x) > 1:
good_dups.append(x)
Listy.txt-外部数据源
1,3,2,3
2,4,5,6
2,3,1
2,3,1
1,2,3
1,3,4,5
3,,4,5,6
1, 2, 3, 4. .,
123, 213, 12, ,
12. 122. 321
13 32 167
列表
通过检查列表是否为数字,将列表分为好的和错的
for n in content:
n = n.split(',')
if [k for k in n if not k.isdigit()]:
wrong.append(n)
else:
good.append(n)
print(("There are: "), len(good), ("error lines"))
for i, val in enumerate(good):
print('Error Syntax', *val, sep=" ")
print()
print(("There are: "), len(good), ("correct lines"))
for i, val in enumerate(good):
print('Error Syntax', *val, sep=" ")
print()
以良好的方式打印出副本的数量
以错误的方式打印出副本的数量
为什么它不起作用
您编写的以下代码将无法工作
good = [[1, 2, 3], [2, 3, 1]]
good_dups = []
for x in good:
x = sorted(x)
if good.count(x) > 1:
good_dups.append(x)
print(good_dups) # []
您正在计算列表的已排序副本在good
中的数量,但如果原始子列表未排序,list.count
将找不到它们
解决方案
您可能需要使用排序的元组作为键来比较子列表,并在dict
或defaultdict
中跟踪它们
from collections import defaultdict
good = [[1, 2, 3], [2, 3, 1], [2, 3, 4]]
good_dups = defaultdict(list)
for x in good:
good_dups[tuple(sorted(x))].append(x)
print(dict(good_dups)) # {(1, 2, 3): [[1, 2, 3], [2, 3, 1]], (2, 3, 4): [[2, 3, 4]]}
重复项是列表长度为两个或两个以上的条目。这似乎是个问题。你的实际预期产出是多少?可能有一个更短的方法来实现它。我想打印出1,2,3三次。或者说在好的副本中有3个副本。您如何定义副本?1、2、3和2、3 1是否重复?请显示所需样本输入的所需输出。首先,我想检查每行是否包含仅为数字的列表,没有特殊符号分隔,并将其分为正确和错误。然后我想在那些(好的,错的)中找到重复的。考虑重复项:2,3,12,3,1,2,3
for x in good:
x = sorted(x)
if good.count(x) > 2:
good_dups.append(x)
print("There are: ", len(good_dups), " duplicates among CORRECT lines:")
for i, val in enumerate(good_dups):
print('Error Syntax', *val, sep=" ")
print()
good = [[1, 2, 3], [2, 3, 1]]
good_dups = []
for x in good:
x = sorted(x)
if good.count(x) > 1:
good_dups.append(x)
print(good_dups) # []
from collections import defaultdict
good = [[1, 2, 3], [2, 3, 1], [2, 3, 4]]
good_dups = defaultdict(list)
for x in good:
good_dups[tuple(sorted(x))].append(x)
print(dict(good_dups)) # {(1, 2, 3): [[1, 2, 3], [2, 3, 1]], (2, 3, 4): [[2, 3, 4]]}