我有一个包含重复项的元组。 我只需要提取唯一项。
例如:
tup = ('one', 'one', 'one', 'two', 'two','three',
'four', 'four', 'four', 'five', 'five', 'seven')
我只需要得到:
'one', 'two', 'three', 'four', 'five', 'seven' (The order is not important).
如何检查元组并仅获取所需的值?
我想出了这个解决方案,但它并没有采用元组的最后一项。
tup = ('one', 'one', 'one', 'two', 'two',
'three', 'four', 'four', 'four', 'five', 'five', 'seven')
for count, item in enumerate(tup):
if (count+1) == len(tup):
break
if tup[count] != tup[count + 1]:
print(tup[count])
这也是,但是它给出了“元组索引超出范围”的错误:
tup = ('one', 'one', 'one', 'two', 'two',
'three', 'four', 'four', 'four', 'five', 'five', 'seven')
i = 0
while len(tup):
if tup[i] != tup[i+1]:
print(tup[i])
i += 1
提前谢谢!
答案 0 :(得分:0)
由于顺序并不重要,因此可以使用set
tup = ('one', 'one', 'one', 'two', 'two','three',
'four', 'four', 'four', 'five', 'five', 'seven')
result = set(tup)
# {'five', 'four', 'one', 'seven', 'three', 'two'}
另一个疯狂的解决方案是使用Counter
from collections import Counter
tup = ('one', 'one', 'one', 'two', 'two','three',
'four', 'four', 'four', 'five', 'five', 'seven')
result = list(Counter(tup).keys())
或更简单,如@ShadowRanger所建议
list(dict.fromkeys(tup))
答案 1 :(得分:0)
通常,tuples
是不可变的,
因此不适用于比较之类的动态操作,
因此您需要将其转换为set
可变的变量,该变量仅存储一次值,
如果您希望订单很重要,可以使用sorted