gpt4 book ai didi

Python:元组/字典作为键、选择、排序

转载 作者:IT老高 更新时间:2023-10-28 21:09:12 25 4
gpt4 key购买 nike

假设我有大量不同颜色的水果,例如,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 的一件事是 tuple-dict 组合。你在这里实际上是一个二维数组(其中 x = 水果名称和 y = 颜色),我通常是实现二维数组的元组字典的支持者,至少在类似 numpy 的情况下或者数据库不是更合适的。所以简而言之,我认为你有一个很好的方法。

请注意,如果不做一些额外的工作,您不能将 dicts 用作 dict 中的键,因此这不是一个很好的解决方案。

也就是说,您还应该考虑 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 dict:

>>> 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']

关于Python:元组/字典作为键、选择、排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4878881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com