如果我有一组元素(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')
关于python - 如何在 Python 中构造具有多个特征的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770967/