就个人而言,我最喜欢python的一件事是tuple-dict组合。您在这里拥有的实际上是一个2d数组(其中x =水果名称,y =颜色),而且我通常是实现2d数组的元组字典的支持者,至少在诸如之类numpy
的数据库不适合使用时。简而言之,我认为您有一个很好的方法。
请注意,如果不做一些额外的工作,就不能将字典用作字典中的键,因此这不是一个很好的解决方案。
也就是说,您还应该考虑namedtuple()。这样,您可以执行以下操作:
>>> from collections import namedtuple
>>> Fruit = namedtuple("Fruit", ["name", "color"])
>>> f = Fruit(name="banana", color="red")
>>> print f
Fruit(name='banana', color='red')
>>> f.name
'banana'
>>> f.color
'red'
现在您可以使用fruitcount字典:
>>> fruitcount = {Fruit("banana", "red"):5}
>>> fruitcount[f]
5
其他技巧:
>>> fruits = fruitcount.keys()
>>> fruits.sort()
>>> print fruits
[Fruit(name='apple', color='green'),
Fruit(name='apple', color='red'),
Fruit(name='banana', color='blue'),
Fruit(name='strawBerry', color='blue')]
>>> fruits.sort(key=lambda x:x.color)
>>> print fruits
[Fruit(name='banana', color='blue'),
Fruit(name='strawBerry', color='blue'),
Fruit(name='apple', color='green'),
Fruit(name='apple', color='red')]
与chmullig相呼应,要获得一个水果的所有颜色的列表,您必须过滤键,即
bananas = [fruit for fruit in fruits if fruit.name=='banana']