繁体   English   中英

无论不常见的成员如何,如何根据较长的列表对较短的列表进行排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM