如何在Python中订购列表并合并连续元素

时间:2018-01-25 14:18:15

标签: python itertools

我有一个像这样的列表列表:

['lion', '23', '35'] 
['lion', '24', '68'] 
['elephant', '23', '34']
['monkey', '4', '20'] 
['monkey', '5', '25']
['monkey','28', '90']
['lion', '33', '2']

我希望将它们排序并合并具有连续值(23-34)的相同类型的动物并合并其相邻值(即狮子的35-68),如下所示:

['lion', '23-24', '35-68']
['lion', '33', '2']
['elephant', '23', '34']
['monkey', '4-5', '20-25']
['monkey', '28', '90']

请注意,狮子和猴子的连续值是合并的,并用短划线和旁边的序列分开。那些不连续的人仍然独自:狮子33和猴子28。

我已经尝试了一些使用itertools和groupby的代码以及labda排序无济于事。

例如

  

strings.sort(key = lambda element:(element [0],element [1]))

按动物名称和连续数字对它们进行排序,但我不知道如何合并它们。

我想要的是按动物的名称按字母顺序排序,并合并具有连续第二个值的那些,并使用该输出创建一个新列表。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情并从这段代码中提示:

[[['elephant', '23', '34']], ['lion', '23-24', '35-68'], ['lion', '33', '2'], ['monkey', '28', '90'], ['monkey', '4-5', '20-25']]

输出:

php artisan migrate