Skip to main content
 首页 » 编程设计

python之如何在 Python 中构造具有多个特征的元素

2025年05月04日16zhoujg

如果我有一组元素(A、B、C、D...),它们都具有两个或更多特征(每个都有颜色、形状等...),我如何制作一个结构,以便我可以轻松地请求所有绿色元素或所有圆形元素的列表?
我想过使用字典,但我不知道这是否是实现该目标的最有效方法。我知道每个对象的每个特性的值永远不会改变。特征不多,对象却很多。

这是一个集合的样子:

test = {'ob1': {'color': ['green'],  
                'shape': 'round'}, 
        'ob2': {'color': ['red'],  
                'shape': 'round'}, 
        'ob3': {'color': ['green', 'yellow'],  
                'shape': 'cubic'} 
        } 

如果我想获取所有绿色对象,我想要一个简单的方法来获取包含 [ob1, ob2] 的列表。但与此同时,我希望仍然能够轻松找到给定对象的属性(例如,我想知道 obj1 是什么颜色和形状)。

请您参考如下方法:

您可以使用 namedtuple,这是一种高效的数据格式。

from collections import namedtuple 
 
Element = namedtuple('Element', 'color size id name') 
 
ELEMENTS_DB = {'e1':Element('green', 12, 34, 'jack'), 
               'e2':Element('blue', 132, 334, 'dan'), 
               'e3':Element('green', 142, 434, 'ben')} 
 
# get green elements 
green_elements = [e for e in ELEMENTS_DB.values() if e.color == 'green'] 
print(green_elements) 
# get 'e3'  
print(ELEMENTS_DB['e3']) 

输出:

[Element(color='green', size=12, id=34, name='jack'), Element(color='green',  
  size=142, id=434, name='ben')] 
Element(color='green', size=142, id=434, name='ben')