Python: Tuples/dictionaries as keys, select, sort

后端 未结 8 1681
独厮守ぢ
独厮守ぢ 2020-12-07 07:53

Suppose I have quantities of fruits of different colors, e.g., 24 blue bananas, 12 green apples, 0 blue strawberries and so on. I\'d like to organize them in a data structur

相关标签:
8条回答
  • 2020-12-07 08:47

    With keys as tuples, you just filter the keys with given second component and sort it:

    blue_fruit = sorted([k for k in data.keys() if k[1] == 'blue'])
    for k in blue_fruit:
      print k[0], data[k] # prints 'banana 24', etc
    

    Sorting works because tuples have natural ordering if their components have natural ordering.

    With keys as rather full-fledged objects, you just filter by k.color == 'blue'.

    You can't really use dicts as keys, but you can create a simplest class like class Foo(object): pass and add any attributes to it on the fly:

    k = Foo()
    k.color = 'blue'
    

    These instances can serve as dict keys, but beware their mutability!

    0 讨论(0)
  • 2020-12-07 08:57

    You could have a dictionary where the entries are a list of other dictionaries:

    fruit_dict = dict()
    fruit_dict['banana'] = [{'yellow': 24}]
    fruit_dict['apple'] = [{'red': 12}, {'green': 14}]
    print fruit_dict
    

    Output:

    {'banana': [{'yellow': 24}], 'apple': [{'red': 12}, {'green': 14}]}

    Edit: As eumiro pointed out, you could use a dictionary of dictionaries:

    fruit_dict = dict()
    fruit_dict['banana'] = {'yellow': 24}
    fruit_dict['apple'] = {'red': 12, 'green': 14}
    print fruit_dict
    

    Output:

    {'banana': {'yellow': 24}, 'apple': {'green': 14, 'red': 12}}

    0 讨论(0)
提交回复
热议问题