Python计数2变量(如果唯一)
如果2个变量是唯一的,则代码必须对其进行计数。Python计数2变量(如果唯一),python,python-2.7,Python,Python 2.7,如果2个变量是唯一的,则代码必须对其进行计数。 但是我不能让它工作。 有人知道我怎样才能让它工作吗 我希望输出为: C603 100nF 8 下面是一个.txt文件的小示例。 BaseBoard_V1.2_Componentlist.txt C1 1nF C0603 rcl (24.7 35.9) R270 C
但是我不能让它工作。
有人知道我怎样才能让它工作吗 我希望输出为:
C603 100nF 8
下面是一个.txt文件的小示例。BaseBoard_V1.2_Componentlist.txt
C1 1nF C0603 rcl (24.7 35.9) R270
C2 100nF C0603 rcl (36.7 32.7) R180
C3 10uF_Tantalum C0603 rcl (22.7 6.45) R0
C4 22uF C0603 rcl (25 8.25) R90
C5 1uF C0603 rcl (22.6 21.85) R180
代码:
输出:
[('0.22uF', 1), ('C0603', 1)]
[('100', 1), ('R0603', 1)]
[('100', 1), ('R0603', 1)]
[('100', 1), ('R0603', 1)]
[('100', 1), ('R0603', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('10K', 1), ('R0603', 1)]
[('10K', 1), ('R0603', 1)]
[('10k', 1), ('R0603', 1)]
[('10uF_Tantalum', 1), ('C0603', 1)]
[('R0603', 1), ('19.6K', 1)]
[('1nF', 1), ('C0603', 1)]
[('C0603', 1), ('1uF', 1)]
[('2.2uF', 1), ('C0603', 1)]
[('2.2uF', 1), ('C0603', 1)]
[('R0603', 1), ('22K', 1)]
[('R0603', 1), ('22K', 1)]
[('22uF', 1), ('C0603', 1)]
[('R0603', 1), ('483', 1)]
[('53047-05', 2)]
[('ATMEGA32L-8MU', 1), ('QFN50P700X700X100-45N', 1)]
10uF_Tantalum C0603 1
22uF C0603 1
1nF C0603 1
100nF C0603 1
1uF C0603
我试着在谷歌上搜索,我试过其他代码,但对我来说不起作用。
有人知道如何解决这个问题吗?前提是我们已经以这种方式组织了数据:
elements = [
("a", "b"),
("c", "d"),
("a", "b"),
("c", "d"),
("a", "b"),
]
我们可以创建一组独特的元素:
elset = set(elements)
然后显示每个唯一元素在原始列表中出现的次数:
for e in elset:
print e[0], e[1], elements.count(e)
如果要将第二个和第三个元素中的每个元素计算为刚刚拆分的单个元素,请使用
itertools.islice
提取第二个和第三个元素,并调用islice对象上的tuple,使用生成器表达式将其传递给计数器:
from collections import Counter
from itertools import islice
with open('test.txt') as f:
print(Counter(tuple(islice(line.split(), 1, 3)) for line in f))
示例的输出:
Counter({('10uF_Tantalum', 'C0603'): 1, ('22uF', 'C0603'): 1, ('1nF', 'C0603'): 1, ('100nF', 'C0603'): 1, ('1uF', 'C0603'): 1})
如果想要更好的输出,请使用str.format并迭代:
with open('test.txt') as f:
cn = Counter(tuple(islice(line.split(), 1, 3)) for line in f)
for k, v in cn.items():
print("{} {} {v}".format(*k, v=v))
输出:
[('0.22uF', 1), ('C0603', 1)]
[('100', 1), ('R0603', 1)]
[('100', 1), ('R0603', 1)]
[('100', 1), ('R0603', 1)]
[('100', 1), ('R0603', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('C0603', 1), ('100nF', 1)]
[('10K', 1), ('R0603', 1)]
[('10K', 1), ('R0603', 1)]
[('10k', 1), ('R0603', 1)]
[('10uF_Tantalum', 1), ('C0603', 1)]
[('R0603', 1), ('19.6K', 1)]
[('1nF', 1), ('C0603', 1)]
[('C0603', 1), ('1uF', 1)]
[('2.2uF', 1), ('C0603', 1)]
[('2.2uF', 1), ('C0603', 1)]
[('R0603', 1), ('22K', 1)]
[('R0603', 1), ('22K', 1)]
[('22uF', 1), ('C0603', 1)]
[('R0603', 1), ('483', 1)]
[('53047-05', 2)]
[('ATMEGA32L-8MU', 1), ('QFN50P700X700X100-45N', 1)]
10uF_Tantalum C0603 1
22uF C0603 1
1nF C0603 1
100nF C0603 1
1uF C0603
如何判断变量是否唯一?能否请你提供更多的信息,可能是你想做什么的一个例子。此外,文件BaseBoard_V1.2_Componentslist.txtC603或100nF中的某些行根据您的需要是唯一的output@Bharadwaj我已经添加了几行.txt文件。@PadraicCunningham我现在看到python不认为它们是唯一的,我必须为此编写简单的代码。是什么使它们唯一?@DjordyWinckler,成功了simpler@DjordyWinckler,不用担心,很高兴它有帮助!有可能得到更干净的输出吗?@DjordyWinckler,什么意义上的更干净?你是说ele1 ele2计数?