Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据用户输入对列表进行排序?_Python_List - Fatal编程技术网

Python 如何根据用户输入对列表进行排序?

Python 如何根据用户输入对列表进行排序?,python,list,Python,List,我想根据用户输入对列表进行排序 output = [[1,2],[3,4],[5,6],[7,8]] # input # ^ ^ ^ ^ # A B C D A = output[0] ; B = output[1] ; C = output[2] ; D = output[3] # initialization userin = input('Enter sequence') seq_list = user

我想根据用户输入对列表进行排序

output = [[1,2],[3,4],[5,6],[7,8]] # input
#           ^     ^     ^     ^
#           A     B     C     D
A = output[0] ; B = output[1] ; C = output[2] ; D = output[3] # initialization
userin = input('Enter sequence')
seq_list = userin.split(',')
print(seq_list)

>>> Enter sequence B,C,D,A
>>> ['B', 'C', 'D', 'A']
Python将输入值解释为字符串,而我希望这些对应的列表得到反映

预期产出:

>>> Enter sequence B,C,D,A
>>> [[3, 4], [5, 6], [7, 8], [1, 2]]
编辑: 我将
输出
变量重新编写为字典,使用指定的字母作为键。然后,它使用
seq_list
上的列表理解,按照用户提供的顺序访问字典

output = {"A": [1,2], "B": [3,4],"C": [5,6],"D": [7,8]}
userin = input('Enter sequence')
seq_list = userin.split(',')
temp_list = [output[key] for key in seq_list]
print(temp_list)

让用户输入数字而不是字母会更容易。然而,如果你想坚持使用字母,你可以把它们映射到字典里。我的示例方法如下所示:

output = [[1,2],[3,4],[5,6],[7,8]]
output_dict = {i:elem for i, elem in enumerate(output)}
user_input = input('Enter sequence - numbers from 1 to 4 separated by comma')
print [output_dict[elem - 1] for elem in user_input]

您可以使用字典理解功能和
zip
功能将
输出的列表转换为列表目录

output = [[1, 2], [3, 4], [5, 6], [7, 8]]
d = {c: u for c, u in zip('ABCD', output)}
print(d)

userin = 'B,C,D,A'
seq_list = [d[c] for c in userin.split(',')]
print(seq_list)
典型输出

{'C': [5, 6], 'B': [3, 4], 'A': [1, 2], 'D': [7, 8]}
[[3, 4], [5, 6], [7, 8], [1, 2]]

Python字典是无序的,在Python3中,每次运行my code时,dict
d
项的打印顺序都会改变。当然这不会影响
seq_list

中子列表的顺序。您可以将列表转换为字典,然后根据用户的输入打印键。为什么不使用数字而不是字母,并直接使用它们进行索引?@grael好的,让我用dictal尝试一下。请提供一些文本解释为什么这是一个合适的解决方案,以及它是什么does@hardillb如果你能为我提供更好的解释,那就太好了,@Tarun K要求解释不一定是为了你的利益,而是为了下一个通过搜索偶然发现这个问题的人。它被标记为低质量的答案,现在更好了