gpt4 book ai didi

python - 为什么 lambda 函数以不同的方式从 dict.items() 和元组列表中获取数据?

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:35 28 4
gpt4 key购买 nike

atomicNumber = {'Rubidium(Rb)':37, 'Lithium(Li)': 2, 'Argon(Ar)': 18 ,'Sodium(Na)': 11, 'Potassium(K)':19, 'Hydrogen(H)': 1,}
sort_atomicNumber = dict(sorted(atomicNumber.items(), key = lambda x: x[0]))
print(sort_atomicNumber)

我正在尝试根据键对字典进行排序。如果我按照上面的方式使用 lambda 表达式,则排序有效。但是在这里,当我使用符号 x[0] 时,我感到很困惑。不应该是 x[0][0] 以便按键名排序吗???

我可以看到 dict.items() 返回的 dict_view 看起来类似于元组列表,所以为什么在排序 x[0] 时返回字符串对象,而在下面的元组列表 'AtmNum' 的情况下,lambda 返回一个元组?

dict_items([('Rubidium(Rb)', 37), ('Lithium(Li)', 2), ('Argon(Ar)', 18), ('Sodium(Na)', 11), ('Potassium(K)', 19), ('Hydrogen(H)', 1)])

AtmNum = [('Rubidium(Rb)', 37), ('Lithium(Li)', 2), ('Argon(Ar)', 18), ('Sodium(Na)', 11), ('Potassium(K)', 19), ('Hydrogen(H)', 1)]
f = lambda x:x[0]
print(f(AtmNum))

输出:('铷(Rb)', 37)

最佳答案

sort_atomicNumber = dict(sorted(atomicNumber.items(), key = lambda x: x[0]))

lambda 中用作排序键的 x 是由 .items() 生成的 (key, value) 元组。正如您在实验中注意到的那样,.items() 生成了这些元组的(可迭代的)列表,sorted 遍历列表并通过应用对它的 lambda。因此,在您的第一个示例中,lambda 指的是使用 .items() 创建的可迭代元素。

与此相反,在第二个示例中:

AtmNum = [('Rubidium(Rb)', 37), ('Lithium(Li)', 2), ('Argon(Ar)', 18), ('Sodium(Na)', 11), ('Potassium(K)', 19), ('Hydrogen(H)', 1)]
f = lambda x:x[0]
print(f(AtmNum))

x 现在是整个列表,因此 x[0] 合理地引用它的第一个元素。

关于python - 为什么 lambda 函数以不同的方式从 dict.items() 和元组列表中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732190/

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