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

标签 python arrays python-3.x dictionary

如果我有一组元素(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/

相关文章:

python - 让 Fabric Python 库工作

java - 在数组中搜索空槽

Python:绘制从x轴上的点(X1,0)到点(X2,Y2)的线的问题

python - 使用 sys.odcinumberlist 作为参数从 python 执行 PL/SQL 过程

javascript - 如果数组中有数字 1-9,则测试 true 或 false

python - 根据其他数组以有效的方式减少 numpy 数组中的数据

python - reshape DataFrame 并根据其他 24 列修改一列

python - 整个 session 的 pytest 超时

python - 通过在文件内进行数学运算来编辑文本文件

python - 计算 python 数组中每个设定间隔的百分位数