【发布时间】:2014-12-31 20:01:05
【问题描述】:
假设我有许多对 (int, str) 的列表,不一定具有相同的长度。这里唯一的限制是列表按整数部分按升序排序:
a = [(1, 'a'), (4, 'a'), (6, 'b'), (7, 'c'), (12, 'a')]
b = [(5, 'd'), (10, 'c'), (11,'e')]
c = [(0, 'b'), (3, 'd')]
我想做的是按照它们对应的整数元素出现的顺序发出字符串元素,即在这种情况下:
(0, 'b'), (1, 'a'), (3, 'd'), (4, 'a'), ...
我想知道是否有一种明显的(nice + pythonic)方法可以使用a、b 和c 的迭代器来做到这一点?我查看了itertools,但在这种情况下无法立即看到如何使用该功能。列表a、b、c 可能非常大,所以我不想将它们读入内存然后排序...
【问题讨论】:
-
如果不阅读它们,就没有办法做到这一点。如果你不把它们都读完,你就无法知道你没有读过的那篇是否真的应该先出来。另外,如果它们是列表,那么它们无论如何都已经在内存中了。