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

时间:2016-08-23 08:29:08

标签: 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 = 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]]

3 个答案:

答案 0 :(得分:1)

您可以使用词典理解和zip函数将output列表列表转换为列表词典。

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字典是无序的,在Python 3中,每次运行代码时,打印字典d项的顺序都会改变。当然,这不会影响seq_list

中子列表的顺序

答案 1 :(得分:0)

编辑: 我使用声明的字母作为键重写了output变量作为字典。然后它使用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)

答案 2 :(得分:0)

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

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]