0

我有这个 python 列表:

['Intercept', 'a', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]', 'b', 'c', 'd', 'e']

我想要最后的国家项目:

['Intercept', 'a', 'b', 'c', 'd', 'e', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]']

如何做到这一点?

(注意,这些项目是我将用于回归分析的数据框的列标题。列名和奇怪的排序由 patsy.dmatrices 生成。)

我尝试了排序、弹出、删除和列表理解,但无济于事。在这种情况下,我决定不解释我做了什么来解决这个问题并且没有工作。这是一个简单的问题,与一位评论员不同,我没有几十年的编程经验。

4

2 回答 2

1

如果您的逻辑是将任何包含国家/地区的项目放在后面,请使用sortedwith key:

l = ['Intercept', 'a', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]', 'b', 'c', 'd', 'e']
sorted(l, key=lambda x: 'country' in x)

输出:

['Intercept',
 'a',
 'b',
 'c',
 'd',
 'e',
 'country[T.BE]',
 'country[T.CY]',
 'country[T.DE]']
于 2019-08-29T00:00:52.540 回答
1

在这里,我假设是否有country[文本是您要拆分的内容...然后您可以使用:

li = ['Intercept', 'a', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]', 'b', 'c', 'd', 'e']
[x for x in li if not 'country[' in x] + [x for x in li if 'country[' in x]
于 2019-08-29T00:03:38.647 回答