[英]Python Sort 2 different Size lists in same Order?
我想根據元素順序對 2 個不同的長度列表進行排序。
我有 2 個 python 列表,它們共享一些元素,例如:
list_1 = [b,e,a,d,c]
list_2 = [b,a,c,k,l,f,d]
我知道使用 itertools 的 zip_longest 我可以對 2 個不同大小的列表進行排序:
for k,j in zip_longest(list_1 ,list_2 ,fillvalue=None):
print (k,j)
這段代碼給了我:
b b
e a
a c
d k
c l
None f
None d
但是是否有可能以相同的順序對相同的值進行排序,例如:
[a,b,c,d,e,None,None,None]
[a,b,c,d,None,f,k,l]
或者像那種格式:
a,a
b,b
c,c
d,d
e,None
None,f
None,k
None,l
多謝 !
您可以使用set
來獲取兩個列表中的所有元素,然后在列表理解中用 None 替換缺失值:
list_1 = ['b','e','a','d','c']
list_2 = ['b','a','c','k','l','f','d']
combined = sorted(set(list_1 + list_2))
new_list_1 = [c if c in list_1 else None for c in combined]
new_list_2 = [c if c in list_2 else None for c in combined]
print(new_list_1, new_list_2, sep='\n')
結果:
['a', 'b', 'c', 'd', 'e', None, None, None]
['a', 'b', 'c', 'd', None, 'f', 'k', 'l']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.