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,我有一个包含数字的列表和一个包含用户的列表。第一个列表的第一个元素属于第二个列表的第一个元素,依此类推。然后,我想使用sort()对数字列表进行排序,并希望用户名仍然与以前的数字匹配 发件人: 致: 我建议将您的值分组到元组列表或字典列表中: 数据=[ ('max',9), ('david',3), (“弗雷迪”,10岁) ] 然后您可以使用对该列表进行排序: data.sort(key=lambda x:x[1]) 通过这种方式,您的数据以保持其关系的方式存储 要改为使用词典,需要进行以下

我有一个包含数字的列表和一个包含用户的列表。第一个列表的第一个元素属于第二个列表的第一个元素,依此类推。然后,我想使用
sort()
对数字列表进行排序,并希望用户名仍然与以前的数字匹配

发件人:

致:


我建议将您的值分组到元组列表或字典列表中

数据=[
('max',9),
('david',3),
(“弗雷迪”,10岁)
]
然后您可以使用对该列表进行排序:

data.sort(key=lambda x:x[1])
通过这种方式,您的数据以保持其关系的方式存储

要改为使用词典,需要进行以下简单更改:

数据=[
{'name':'max','number':9},
{'name':'david','number':3},
{'name':'freddy','number':10}
]
然后将排序代码更改为

data.sort(key=lambda x:x['number'])
您可以使用和:


您可以将两者压缩到一个列表中,根据编号进行排序,然后将其解压缩:

users=[“max”、“david”、“freddy”]
数字=[9,3,10]
zipped=sorted(zip(数字、用户),key=lambda x:x[0])
数字,用户=zip(*压缩)

您可以尝试使用字典查找用户编号和用户名

users = ["max", "david", "freddy"]

numbers = [9, 3, 10]

dictionary = {users[i]: numbers[i] for i in range(len(numbers))} 

{'max': 9, 'david': 3, 'freddy': 10}


然后对字典进行排序并转换回列表\

使用zip和map的正确组合,您可以在一行中完成此操作:

users   = ["max", "david", "freddy"]
numbers = [9, 3, 10]

numbers,users = map(list,zip(*sorted(zip(numbers,users))))

print(users)   # ['david', 'max', 'freddy'] 
print(numbers) # [3, 9, 10]

为什么不使用dict(键值对)将这些数字映射到用户?这是否回答了您的问题?不需要
lambda
。默认情况下,它将首先按第一个元素排序。如果为True,则将其删除
>>> users = ["max", "david", "Freddy"]
>>> numbers = [9, 3, 10]
>>> sorted_users = [u for _, u in sorted(zip(numbers, users)]
>>> sorted_users
['david', 'max', 'freddy']
users = ["max", "david", "freddy"]

numbers = [9, 3, 10]

dictionary = {users[i]: numbers[i] for i in range(len(numbers))} 

{'max': 9, 'david': 3, 'freddy': 10}

users   = ["max", "david", "freddy"]
numbers = [9, 3, 10]

numbers,users = map(list,zip(*sorted(zip(numbers,users))))

print(users)   # ['david', 'max', 'freddy'] 
print(numbers) # [3, 9, 10]