我想根据用户输入对列表进行排序。
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]]
答案 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]