比较集合组件

时间:2017-10-31 14:15:41

标签: python function set

我想创建一个函数,它接受两组A和B,如果A小于B,则返回True。

def set_less_than(A, B):
    Alist = list(A)
    Blist = list(B)

    ans = []

    for index in range(len(A)):
        try:
            ans.append(Alist[index] < Blist[index])
        except TypeError:
            ans.append("impossible to compare")

    return ans

但是,我该如何处理这个案子, 例如:

  

A = {0,'b',(0,'a')}和B = {1,'a',(2,-3)}

我想要输出

  

[真,假,(真,'不可能')]

1 个答案:

答案 0 :(得分:0)

这是一个难以回答的问题,因为Scott points out,答案将是荒谬的,因为集合是无序的。即:无法按顺序比较项目。因此,尝试按索引按顺序抓取每个项目随后将无法工作。此外,说字母字符小于另一个字符是没有意义的。同样的事情适用于元组。

但如果这确实是 想要你想做的话,我就是这样做的:

  1. 查看这些项目是否为整数()。
  2. 如果是,请比较它们并附加TrueFalse值。
  3. 如果没有,请追加"impossible"
  4. def set_less_than(set_a, set_b):
        list_a = list(set_a)
        list_b = list(set_b)
    
        ans = []
    
        for index in range(len(list_a)):
    
            if isinstance(list_a[index], int) and isinstance(list_b[index], int):
                ans.append(list_a[index] < list_b[index])
            else:
                ans.append("impossible")
    
        return ans
    
    a = set([0, 'b', (0, 'a')])
    b = set([1, 'a', (2, -3)])
    
    answer = set_less_than(a, b)
    
    for a in answer:
        print a
    

    在我的情况下,0'a'等进行比较。比较的每个项目都会返回 "impossible"