一種方式來分類遍歷一對iterables a
的和b
按排序順序是鏈它們和排序鏈式迭代:迭代在一對iterables的,由屬性
for i in sorted(chain(a, b)):
print i
例如,如果每一個的元件可迭代是:
a: 4, 6, 1
b: 8, 3
然後該構建將產生元件的順序
1, 3, 4, 6, 8
但是,如果迭代對對象進行迭代,則會按內存地址對對象進行排序。假設每個迭代遍歷同一類型的對象,
什麼是最快方式來遍歷特定 屬性的對象,該屬性排序?
如果在迭代中要選擇的屬性不同,該怎麼辦?如果iterables
a
和b
兩疊代foo
類型的對象,其屬性foo.x
和相同類型的foo.y
,怎麼可能一個疊代的a
元素通過x
和b
排序由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
如前製備。請注意,只有來自a
的x
屬性和來自b
的y
屬性纔會進入排序和結果。
關於第二個問題:在排序是如何合併?你能提供一個例子嗎? –
@TimPietzcker因爲根據問題'foo.x'和'foo.y'屬於同一類型,直覺上我會說OP會期望整個批次被排序在一個假想的'foo.z'上,等於相關的每個迭代的屬性。 –
@ZeroPiraeus基本上是的。 –