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