首页  >  问答  >  正文

python多个对象的某个成员比大小怎么做?

有多个类型一致的对象,a b c
每个对象下有同样的整数属性a.click

现在需要根据click的数值大小排序(可能有重复),

再根据click的排序位置取出,对象里的其他成员数据

想了好半天,该怎么实现呢

学习ing学习ing2659 天前721

全部回复(2)我来回复

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-13 09:26:48

    这样吗?

    # coding: utf8
    
    class A():
        def __init__(self):
            self.click = 0
    
    
    a = A()
    a.click = 4
    a.test = 'I am a'
    
    b = A()
    b.click = 1
    b.test = 'I am b'
    
    c = A()
    c.click = 2
    c.test = 'I am c'
    
    for i in sorted([a, b, c], key=lambda x: x.click, reverse=True):
        print i.test
        
    # 输出(根据click的值从小到大输出test属性)
    I am b
    I am c
    I am a

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-13 09:26:48

    写了个例子:

    #!/usr/bin/python3
    
    
    class Class:
    
        def __init__(self, key, value):
            self.key, self.value = key, value
    
    
    def get_values(*args):
        return [o.value for o in sorted(args, key=lambda o: o.key)]
    
    
    print(
        get_values(
            Class(3, 1),
            Class(1, 2),
            Class(2, 3)
        )
    )
    
    # Output: [2, 3, 1]

    是这个意思吗

    回复
    0
  • 取消回复