[英]How to sort a shorter list based on a longer list regardless of uncommon members?
我有两个 a 和 b 列表,其中 a 比 b 长,并且与 b 有一些共同的成员。 在以下示例中,我想要的 output将 b 排序为:
b=[1,3,5]
并且还从 a 中删除了不常见的成员。
但是使用 zip 并设置,我尝试了两种方法,更改了 a:6 和 7 的 2 个不常见成员的 position,但我没有得到相同的结果。
注意:成员不一定是 integer,也可以是字符串
情况1:
a=[ 1,2,3,4,5,6,7]
b=[1,22,3,44,5]
a,b= zip(*sorted(zip(a,b)))
a
Out[15]: (1, 2, 3, 4, 5)
b
Out[16]: (1, 22, 3, 44, 5)
set(a)&set(b)
Out[18]: {1, 3, 5}
案例2:
a=[ 6,7,1,2,3,4,5]
b=[1,22,3,44,5]
a,b= zip(*sorted(zip(a,b)))
a
Out[20]: (1, 2, 3, 6, 7)
b
Out[21]: (3, 44, 5, 1, 22)
set(a)&set(b)
Out[22]: {1, 3}
您可以通过以下方式获取包含常见成员的列表:
>>> a=[ 1,2,3,4,5,6,7]
>>> b=[1,22,3,44,5]
>>> sorted(set(a)&set(b))
[1, 3, 5]
第二个例子:
>>> a=[ 6,7,1,2,3,4,5]
>>> b=[1,22,3,44,5]
>>> sorted(set(a)&set(b))
[1, 3, 5]
字符串:
>>> a=['a','c','b','d','e']
>>> b=['c','a','g','4','b']
>>> sorted(set(a)&set(b))
['a', 'b', 'c']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.