title: Python, how to sort list of object?
body: <p>I have a list of object that looks like this.</p>
  
  <pre><code>hand = [ Card(10, 'H'), Card(2,'h'), Card(12,'h'), Card(13, 'h'), Card(14, 'h') ]
  </code></pre>
  
  <p>Card(10, 'H) here is not a tuple, but an object. I know how to sort this list if each item in the list was in a form of tuple, like this,</p>
  
  <pre><code>hand = sorted(hand, key = lambda x: x[0])
  </code></pre>
  
  <p>but I have no idea how to sort a list of objects. I want to sort my list by the first input value, which is the number in Card()</p>
  
  <p>How can I do this? </p>
  
  <p>Edit: Here's the definition of Card().</p>
  
  <pre><code>class Card(object):
  
      RANKS = (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
  
      SUITS = ('C', 'D', 'H', 'S')
  
      def __init__(self, rank=12, suit='S'):
  
          if (rank in Card.RANKS):
              self.rank = rank
          else:
              self.rank = 12
  
          if (suit in Card.SUITS):
              self.suit = suit.upper()
          else:
              self.suit = 'S'
  
      def __str__(self):
          if (self.rank == 14):
              rank = 'A'
          elif (self.rank == 13):
              rank = 'K'
          elif (self.rank == 12):
              rank = 'Q'
          elif (self.rank == 11):
              rank = 'J'
          else:
              rank = str(self.rank)
          return rank + self.suit
  
      def __eq__(self, other):
          return (self.rank == other.rank)
  
      def __ne__(self, other):
          return (self.rank != other.rank)
  
      def __lt__(self, other):
          return (self.rank &lt; other.rank)
  
      def __le__(self, other):
          return (self.rank &lt;= other.rank)
  
      def __gt__(self, other):
          return (self.rank &gt; other.rank)
  
      def __ge__(self, other):
          return (self.rank &gt;= other.rank)
  </code></pre>