Порядок не имеет значения:
>>> [ (u.value, u.meta) for u in set([b,d]).intersection(set([a,c,e])) ]
[('1', 'right'), ('2', 'right')]
>>> [ (u.value, u.meta) for u in set([a,c,e]).intersection(set([b,d])) ]
[('1', 'right'), ('2', 'right')]
Однако, если вы сделаете это:
>>> f = MyObject('3', 'right')
И добавьте f
к «правильному» набору:
>>> [ (u.value, u.meta) for u in set([a,c,e]).intersection(set([b,d,f])) ]
[('1', 'right'), ('3', 'right'), ('2', 'right')]
>>> [ (u.value, u.meta) for u in set([b,d,f]).intersection(set([a,c,e])) ]
[('1', 'left'), ('3', 'left'), ('2', 'left')]
Итак, вы можете видеть, что поведение зависит от размера наборов (тот же эффект происходит, если вы union
).Это может зависеть и от других факторов.Я думаю, что вы ищете источник Python, если хотите знать почему.