我希望能够在比较时保持列表的顺序.注意当我将list1与list2进行比较时,它返回8然后是7(反向).我如何维护订单?
>>> list1 = ['1','2','3','4','7','8'] 
>>> list2 = ['1','2','3','4','5','6']
>>> list(set(list2) - set(list1))    
['5', '6']
>>> list(set(list1) - set(list2))    
['8', '7']
An OrderedDict可以替代保留订单的集合,因为密钥视图是设置的:
>>> from collections import OrderedDict
>>> list1 = ['1','2','3','4','7','8'] 
>>> list2 = ['1','2','3','4','5','6']
>>> OrderedDict.fromkeys(list1).keys() - OrderedDict.fromkeys(list2).keys()
{'7', '8'}
>>> OrderedDict.fromkeys(list2).keys() - OrderedDict.fromkeys(list1).keys()
{'5', '6'}
严格来说,这可能仍然使用CPython的实现细节.但列表推导不是,它们仍然是O(n):
>>> od1 = OrderedDict.fromkeys(list1)
>>> od2 = OrderedDict.fromkeys(list2)
>>> [k for k in od1 if k not in od2]
['7', '8']
>>> [k for k in od2 if k not in od1]
['5', '6']
| 归档时间: | 
 | 
| 查看次数: | 130 次 | 
| 最近记录: |