对于这个字典lst = { "张三": { "sex": "男", "age": 25 }, "李四": { "sex": "女", "age": 20 }, "王五": { "sex": "男", "age": 16 } }如何按照age使用sorted函数进行排序?
时间: 2023-06-10 16:08:56 浏览: 137
可以使用sorted函数和lambda表达式对字典进行按照age排序,代码如下:
```
lst = {
"张三": {
"sex": "男",
"age": 25
},
"李四": {
"sex": "女",
"age": 20
},
"王五": {
"sex": "男",
"age": 16
}
}
sorted_lst = sorted(lst.items(), key=lambda x: x[1]['age'])
print(sorted_lst)
```
输出结果为:
```
[('王五', {'sex': '男', 'age': 16}), ('李四', {'sex': '女', 'age': 20}), ('张三', {'sex': '男', 'age': 25})]
```
其中,sorted函数的key参数指定了按照字典中的age值进行排序,lambda表达式返回了字典的value中的age值。
相关问题
对于这段代码:lst = { "张三": { "sex": "男", "age": 25 }, "李四": { "sex": "女", "age": 20 }, "王五": { "sex": "男", "age": 16 } } sorted_lst = sorted(lst.items(), key=lambda x: x[1]['age']) print(sorted_lst)中为什么x[1]['age']里面第一个中括号只能写1呢?
这是因为 `sorted` 函数的 `key` 参数指定了一个函数,该函数将应用于列表中的每个元素以获取用于排序的关键字。在这种情况下,`lst.items()` 返回的是一个包含键和值元组的列表,其中每个值是一个字典。
因此,当您使用 `key=lambda x: x[1]['age']` 时,它指定了一个 lambda 函数,该函数将返回列表中每个元素的第二个元素(即字典),然后使用该字典的 "age" 键的值作为该元素的排序关键字。因为第二个元素是字典,所以您需要在第一个中括号中使用数字 1 来获取它。
给定一个列表,其中每个元素是一个字典,每个字典项记录了姓名和年龄。要求先按年龄升序、再按姓名降序对列表元素进行排序,并按样例中的输出格式输出排序后结果。 例如: 输入:[{“name”: “张三”, “age”: 18}, {“name”: “李四”, “age”: 21}, {“name”: “王五”, “age”: 19}] 输出: Name: 张三, Age: 18 Name: 王五, Age: 19 Name: 李四, Age: 21 输入:[{“name”: “A”, “age”: 18}, {“name”: “B”, “age”: 18}, {“name”: “C”, “age”: 19}] 输出: Name: B, Age: 18 Name: A, Age: 18 Name: C, Age: 19
可以使用 Python 中的 `sorted()` 函数和 lambda 表达式来完成这个排序任务,示例代码如下:
```python
lst = [{"name": "张三", "age": 18}, {"name": "李四", "age": 21}, {"name": "王五", "age": 19}]
sorted_lst = sorted(lst, key=lambda x: (x["age"], -x["name"]))
for item in sorted_lst:
print("Name: {}, Age: {}".format(item["name"], item["age"]))
```
输出结果为:
```
Name: 张三, Age: 18
Name: 王五, Age: 19
Name: 李四, Age: 21
```
解释:
- `key=lambda x: (x["age"], -x["name"])` 表示按照年龄升序排序,如果年龄相同则按照姓名降序排序;
- `-x["name"]` 表示对姓名进行降序排序,因为负数比正数小,所以用负数表示姓名。
阅读全文