gpt4 book ai didi

python - 当值是一个列表并且我想按该列表的第一个索引对它进行排序时,如何按值对 python 中的字典进行排序

转载 作者:太空狗 更新时间:2023-10-30 02:02:17 26 4
gpt4 key购买 nike

如果值是一个列表,是否可以按值对 python 字典进行排序,我希望它按该列表的第一个值排序。例如:

data = {
"Joe" : [1, "Joe", "password", "Joe@Email.com"],
"Toby" : [2, "Toby", "password", "Toby@Email.com"],
"John" : [4, "John", "password", "John@Email.com"],
"Julie" : [3, "Julie", "password", "Julie@Email.com"]
}

我希望它是这样的:'i' 是关键所在

for i in range(len(data)):
print("UserID: ", str(data[i][0]), ". Username: ", data[i][1])

>> UserID: 1. Username: Joe
>> UserID: 2. Username: Toby
>> UserID: 3. Username: Julie
>> UserID: 4. Username: John

非常感谢。

最佳答案

您不能就地对字典进行排序,因为 Python 字典是无序的。您至少有 2 个选择:

创建一个排序的元组列表

您可以将 sortedkey= 一起使用争论。在这种情况下,它将是字典值的第一个元素:

sorted(data.items(), key= lambda x: x[1][0])
# [('Joe', [1, 'Joe', 'password', 'Joe@Email.com']), ('Toby', [2, 'Toby', 'password', 'Toby@Email.com']), ('Julie', [3, 'Julie', 'password', 'Julie@Email.com']), ('John', [4, 'John', 'password', 'John@Email.com'])]

它返回一个排序的元组列表,您可以使用它来迭代并打印结果:

data = {
"Joe": [1, "Joe", "password", "Joe@Email.com"],
"Toby": [2, "Toby", "password", "Toby@Email.com"],
"John": [4, "John", "password", "John@Email.com"],
"Julie": [3, "Julie", "password", "Julie@Email.com"]
}

for name, lst in sorted(data.items(), key=lambda x: x[1][0]):
print("UserID : %d. Username : %s" % (lst[0], name))

# UserID : 1. Username : Joe
# UserID : 2. Username : Toby
# UserID : 3. Username : Julie
# UserID : 4. Username : John

创建一个 OrderedDict

如果您想对数据 进行排序并保留dict 的功能,您可以创建一个OrderedDict。 :

from collections import OrderedDict

data = {
"Joe": [1, "Joe", "password", "Joe@Email.com"],
"Toby": [2, "Toby", "password", "Toby@Email.com"],
"John": [4, "John", "password", "John@Email.com"],
"Julie": [3, "Julie", "password", "Julie@Email.com"]
}

data = OrderedDict(sorted(data.items(), key=lambda x: x[1][0]))
# OrderedDict([('Joe', [1, 'Joe', 'password', 'Joe@Email.com']), ('Toby', [2, 'Toby', 'password', 'Toby@Email.com']), ('Julie', [3, 'Julie', 'password', 'Julie@Email.com']), ('John', [4, 'John', 'password', 'John@Email.com'])])

注意:对于这两个示例,key=lambda x: x[1] 也足够了。

关于python - 当值是一个列表并且我想按该列表的第一个索引对它进行排序时,如何按值对 python 中的字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com