Skip to main content
 首页 » 编程设计

python之如何根据多个已排序项目列表制作一个已排序项目列表

2025年05月04日16haluo1

我正在尝试从较小的列表中获取经过排序的主列表。这可以在 python 或 R 中。

在 R 中,我有

l1<-c("a","c","d") 
l2<-c("a","b","e") 
l3<-c("a","c","e") 
l4<-c("a","b","c","e") 
l5<-c("b","c","d") 
 
m<-unique(c(l1,l2,l3,l4,l5)) 

我期望的输出是 a,b,c,d,e。

在 python

l1=["a","c","d"] 
l2=["a","b","e"] 
l3=["a","c","e"] 
l4=["a","b","c","e"] 
l5=["b","c","d"] 

预期结果是 ["a","b","c","d","e"] 我开始制作一组并检查每个列表并检查索引但它开始变得复杂。

谢谢你的帮助。

编辑: 我想我把按字母顺序排序的列表弄糊涂了。这些列表项可能是随机的。真正的顺序可能不是a,b,c,d,e。

l1=["e","a"] 
l2=["e","b","d"] 
l3=["b","d","a"] 

在这种情况下,预期顺序是 ["e","b","d","a"] 而不是 ["a","b","d", “e”]

为了更清楚,想想很少有人试图从东到西命名美国各州。

person 1 says, Florida, Louisiana, Nevada,California.  
person 2 says  Alabama, Mississippi, Louisiana, new Mexico, Nevada  
person 3 says Florida, Alabama, Texas, New Mexico, California 
person 4 says Alabama, Mississippi, Texas, Nevada 
person 5 says Mississippi Louisiana, Nevada 

我正在尝试从上面的信息中获得正确的顺序。

所以,在这里,我们将从佛罗里达、路易斯安那、内华达、加利福尼亚开始。现在,添加第二个,它将是 (阿拉巴马州、佛罗里达州)、路易斯安那州、新墨西哥州、内华达州、加利福尼亚州。 添加第三个(打破阿拉巴马州/佛罗里达州的平局),佛罗里达州、阿拉巴马州、路易斯安那州、得克萨斯州、新墨西哥州、内华达州、加利福尼亚州 加上第 4 位就是 佛罗里达州、阿拉巴马州(密西西比州/路易斯安那州)、德克萨斯州、新墨西哥州、内华达州、加利福尼亚州。添加密西西比州和路易斯安那州的第 5 个破发平局。

请您参考如下方法:

Aaa 实际答案:https://www.python.org/doc/essays/graphs/

狩猎好! :D

这应该可以解决您的原始问题:

l1=["a","c","d"] 
l2=["a","b","e"] 
l3=["a","c","e"] 
l4=["a","b","c","e"] 
l5=["b","c","d"] 
 
s = set() 
s.update(l1, l2, l3, l4, l5) 
l = sorted(s) 
l 
#['a', 'b', 'c', 'd', 'e'] 

对于您编辑过的问题,让我们考虑一下您的第二个示例的细微变化:

l1=["e","a"] 
l2=["e","b","d"] 
l3=["b","c","a"] 

(斜视 l3。)在这种情况下,列表集未定,因为 d 和 c 之间没有唯一的顺序>。没有决定关系的规则,就不可能有算法。