迭代一对可迭代对象a
并按b
排序顺序的一种方法(最快的方法?)是将它们链接起来并对链接的可迭代对象进行排序:
for i in sorted(chain(a, b)):
print i
例如,如果每个迭代的元素是:
a: 4, 6, 1
b: 8, 3
那么这个构造将按顺序生成元素
1, 3, 4, 6, 8
但是,如果可迭代对象遍历对象,则会按对象的内存地址对对象进行排序。假设每个可迭代对象都迭代相同类型的对象,
迭代对象的特定属性(按此属性排序 )的最快方法是什么?
如果要选择的属性在可迭代对象之间不同怎么办?如果 iterables
a
和b
两者都迭代 type 的对象foo
,这些对象具有相同类型的属性foo.x
,foo.y
那么如何迭代a
sorted byx
和b
sorted by的元素y
?
对于 #2 的示例,如果
a: (x=4,y=3), (x=6,y=2), (x=1,y=7)
b: (x=2,y=8), (x=2,y=3)
那么元素应该按顺序生成
1, 3, 4, 6, 8
和以前一样。请注意,只有来自的x
属性a
和来自的y
属性才能b
进入排序和结果。