假设我有很多不同颜色的水果,例如,24个蓝色香蕉,12个绿色苹果,0个蓝色草莓等等。 我想用Python将它们组织成一个数据结构,这样可以方便地进行选择和排序。我的想法是把它们放进一本以元组为键的字典里,例如
{ ('banana', 'blue' ): 24,
('apple', 'green'): 12,
('strawberry','blue' ): 0,
...
}
甚至字典,例如
{ {'fruit': 'banana', 'color': 'blue' }: 24,
{'fruit': 'apple', 'color': 'green'}: 12,
{'fruit': 'strawberry','color': 'blue' }: 0,
...
}
例如,我想检索一份所有蓝色水果或各种颜色香蕉的列表,或者按水果的名称对这本词典进行排序。有没有干净的方法?
很可能使用元组作为键的字典并不是处理这种情况的正确方法。
欢迎所有建议!
就我个人而言,我喜欢python的一个地方就是元组dict组合。这里有一个有效的2d数组(其中x=fruit name和y=color),我通常是实现2d数组的元组dict的支持者,至少在像
numpy
或数据库这样的东西不太合适的情况下是这样。总之,我认为你有一个很好的方法。注意,如果不做一些额外的工作,就不能将dict用作dict中的键,所以这不是一个很好的解决方案。
也就是说,你还应该考虑namedtuple()。这样你就可以做到:
现在你可以使用你的水果计数指令:
其他技巧:
回响chmullig,要得到一个水果的所有颜色的列表,你必须过滤这些键,即
你最好的选择是创建一个简单的数据结构来对你拥有的东西进行建模。然后,您可以将这些对象存储在一个简单的列表中,并以任何方式对它们进行排序/检索。
对于这种情况,我将使用以下类:
然后,您可以简单地构造“水果”实例并将其添加到列表中,如下所示:
简单的列表
fruits
将更容易、更容易理解和维护。一些使用示例:
以下所有输出是运行给定代码段后的结果,后跟:
未排序列表:
显示:
按名称按字母顺序排序:
显示:
按数量排序:
显示:
其中颜色=红色:
显示:
数据库,dict的dict,dictionary列表的dictionary,命名元组(它是一个子类),sqlite,冗余。。。 我不相信我的眼睛。还有什么?
是啊!我以为
所以,在我看来,一个元组列表就足够了:
结果
相关问题 更多 >
编程相关推荐