如何检查和比较元组项目

时间:2019-04-30 15:46:40

标签: python tuples outofrangeexception

我有一个包含重复项的元组。 我只需要提取唯一项。

例如:

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

提前谢谢!

2 个答案:

答案 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