【发布时间】:2011-03-03 16:35:16
【问题描述】:
我有一组如下所示的列表:
conditions = [
["condition1", ["sample1", "sample2", "sample3"]],
["condition2", ["sample4", "sample5", "sample6"],
...]
如何在 Python 中高效优雅地执行以下操作?
-
找出某个条件下的所有元素?
例如获取条件2中的所有样本。现在我可以做到:
for cond in conditions: cond_name, samples = cond if cond_name == requested_cond: return samples但这很笨重。
-
找到条件列表的有序联合?例如。
ordered_union(["condition1", "condition2"], conditions)应该返回:["sample1", "sample2", "sample3", "sample4", "sample5", "sample6"]
如何在 Python 中有效地做到这一点?可能有聪明的一个班轮?
【问题讨论】:
-
为什么这是一个列表列表?为什么这不是字典?
-
这通常很小,只有 3 或 4 个条件,似乎不值得字典。此外,顺序对我来说很重要,因为我稍后会按条件顺序绘制这些值......所以我不确定如何使用 dicts 来完成它并对其进行排序。
-
“似乎不值得一本字典” 毫无意义。您的问题似乎是精确且仅类似于字典的键查找。阅读
sorted并重新提出您的问题。 -
你能澄清一下#2中的“有序联合”是什么意思吗?例如,如果条件列表重叠会发生什么?假设 cond1 是
['item1','item2']而 cond2 是['item2', 'item1']- 结果应该是什么? -
还有
OrderedDicts,它的作用就像普通的字典,但保留了插入项目的顺序,我认为是在 Python 3.1 和 2.7 中添加的。请参阅python.org/dev/peps/pep-0372 了解更多信息以及使用旧版 Python 执行此操作的方法的链接。
标签: python list list-comprehension