【发布时间】:2018-08-23 02:12:33
【问题描述】:
我有一个集合,其中每个元素都是 2 个元组的元组,每个元组自身包含 3 个元素/字段,例如,集合的一个元素看起来像:
(('q0','l0','s0'),('q1','l1','s1'))
我需要查找集合元素的特定字段。 我现在这样做的方式是:
for set_element in my_set:
s0 = set_element[0]
s1 = set_element[1]
if s0 == '('q0','l0','s0')':
"add this set_element to another set"
现在这行得通,但是对于集合中的大量元素,我觉得这不是很有效,因为每次我都必须遍历集合中的所有元素,而我无法利用集合的效率.
有没有更有效的方法呢?考虑到我可能还需要访问一个特定的字段,比如 'q0'
编辑: 我会做一个更详细的例子,假设我有这组元素:
x= [(('q0','l0','s0'),('q1','l1','s1')),(('q0','l1','s0'),
('q1','l2','s2')),(('q0','l0','s4'),('q1','l1','s1')),
(('q2','l2','s2'),('q3','l3','s3')),(('q4','l4','s4'),('q5','l5','s5'))]
并且我想提取第一个元组具有 q0 作为元素的所有元素,所以在这种情况下,结果将是
(('q0','l0','s0'),('q1','l1','s1'))
(('q0','l1','s0'),('q1','l2','s2'))
(('q0','l0','s4'),('q1','l1','s1'))
【问题讨论】:
-
您可以尝试使用集合推导来聚合所有必需的元素。然后用这个聚合集更新“另一个集”。
-
你能给我一个简单的例子来说明你会怎么做吗?
-
您能否提供一些数据(不必很大,只需多个元素)以便我们进行基准测试吗?信不信由你,创建测试数据是一种降低响应者兴趣的手动工作!
-
@jpp 是的,当然。我在问题中添加了它,以便更容易阅读