Python 根据输入更改列表的顺序

Python 根据输入更改列表的顺序,python,Python,我有一个列表,如下所示 [('Jon', '177'), ('Danei', '1420'), ('Adan', '146'), ('Gabriel', '110'), ('Chase', '117'), ('Hetmyer', '418'), ('Smith', '162')] 这实际上是一个自定义排序的列表,我想通过固定列表中的第一个元素来更改其顺序,即如果我将Hetmyer作为输入,则新列表应该如下所示 [('Hetmyer', '418'), ('Smith', '162'),('Jo

我有一个列表,如下所示

[('Jon', '177'), ('Danei', '1420'), ('Adan', '146'), ('Gabriel', '110'), ('Chase', '117'), ('Hetmyer', '418'), ('Smith', '162')]
这实际上是一个自定义排序的列表,我想通过固定列表中的第一个元素来更改其顺序,即如果我将
Hetmyer
作为输入,则新列表应该如下所示

[('Hetmyer', '418'), ('Smith', '162'),('Jon', '177'), ('Danei', '1420'), ('Adan', '146'), ('Gabriel', '110'), ('Chase', '117')]
如果我给Adan作为输入,新列表应该如下所示

[('Adan', '146'), ('Gabriel', '110'), ('Chase', '117'), ('Hetmyer', '418'), ('Smith', '162'),('Jon', '177'), ('Danei', '1420') ]
基本上,我给出的任何输入都应该成为列表的第一个成员,其余的顺序应该按照原样进行,即它应该以输入开始,以输入成员之前的列表成员结束,我们是否有任何内置函数用于此

查找位置:

for i, item in enumerate(l):
    if item[0] == "Hetmyer":
        pos = i
建立新列表:

m = l[pos:] + l[:pos]
结果:

[('Hetmyer', '418'), ('Smith', '162'), ('Jon', '177'), ('Danei', '1420'), ('Adan', '146'), ('Gabriel', '110'), ('Chase', '117')]
您可以继续使用查找元素,然后继续切片:

def resort(name_list, name):
    """Return the given name_list ordered using the given name."""
    index = list(zip(*name_list))[0].index(name)
    return name_list[:index] + name_list[index:]

resort(names, "Danei")
结果:

[('Jon', '177'),
 ('Danei', '1420'),
 ('Adan', '146'),
 ('Gabriel', '110'),
 ('Chase', '117'),
 ('Hetmyer', '418'),
 ('Smith', '162')]

你试过什么吗?有效吗?他的意思是你从列表中选择一个名字,然后这个名字和后面的项目应该移到列表的开头
[('Jon', '177'),
 ('Danei', '1420'),
 ('Adan', '146'),
 ('Gabriel', '110'),
 ('Chase', '117'),
 ('Hetmyer', '418'),
 ('Smith', '162')]