这是我的列表列:
cols
Out[11]:
['ga:date',
'ga:hour',
'ga:dimension1',
'ga:dimension2',
'ga:userType',
'ga:landingpagePath',
'ga:deviceCategory',
'ga:sessions',
'ga:goal1Completions',
'ga:bounces',
'ga:operatingSystem',
'ga:source',
'ga:medium',
'ga:campaign',
'ga:adContent',
'ga:keyword']
我想对其重新排序,以使ga:sessions,ga:bounces和ga:goal1Completions位于结尾。
除了手动输入以外,我该如何先从cols的中间删除这些项目,然后在末尾附加这些项目?
所需结果:
cols
Out[11]:
['ga:date',
'ga:hour',
'ga:dimension1',
'ga:dimension2',
'ga:userType',
'ga:landingpagePath',
'ga:deviceCategory',
'ga:operatingSystem',
'ga:source',
'ga:medium',
'ga:campaign',
'ga:adContent',
'ga:keyword',
'ga:sessions',
'ga:goal1Completions',
'ga:bounces']
答案 0 :(得分:0)
l = sorted(l, key=lambda v: 1 if v in ('ga:goal1Completions', 'ga:bounces', 'ga:operatingSystem') else 0)
print(l)
打印:
['ga:date', 'ga:hour', 'ga:dimension1', 'ga:dimension2', 'ga:userType', 'ga:landingpagePath', 'ga:deviceCategory', 'ga:sessions', 'ga:source', 'ga:medium', 'ga:campaign', 'ga:adContent', 'ga:keyword', 'ga:goal1Completions', 'ga:bounces', 'ga:operatingSystem']
或者使用权重,如果您想精确按顺序排列组:
weights = {'ga:sessions':1, 'ga:goal1Completions':2, 'ga:bounces':3}
l = sorted(l, key=lambda v: 0 if v not in weights else weights[v])
print(l)
输出:
['ga:date', 'ga:hour', 'ga:dimension1', 'ga:dimension2', 'ga:userType', 'ga:landingpagePath', 'ga:deviceCategory', 'ga:operatingSystem', 'ga:source', 'ga:medium', 'ga:campaign', 'ga:adContent', 'ga:keyword', 'ga:sessions', 'ga:goal1Completions', 'ga:bounces']