对于这段代码: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呢?
时间: 2023-06-10 20:08:53 浏览: 42
这是因为 `sorted` 函数的 `key` 参数指定了一个函数,该函数将应用于列表中的每个元素以获取用于排序的关键字。在这种情况下,`lst.items()` 返回的是一个包含键和值元组的列表,其中每个值是一个字典。
因此,当您使用 `key=lambda x: x[1]['age']` 时,它指定了一个 lambda 函数,该函数将返回列表中每个元素的第二个元素(即字典),然后使用该字典的 "age" 键的值作为该元素的排序关键字。因为第二个元素是字典,所以您需要在第一个中括号中使用数字 1 来获取它。
相关问题
对于这个字典lst = { "张三": { "sex": "男", "age": 25 }, "李四": { "sex": "女", "age": 20 }, "王五": { "sex": "男", "age": 16 } }如何按照age使用sorted函数进行排序?
可以使用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值。
for (auto & it : lst)这段代码换种写法
这段代码的另一种写法是使用迭代器,如下所示:
```
for (std::list<int>::iterator it = lst.begin(); it != lst.end(); ++it) {
int &val = *it;
// 在这里使用变量 val
}
```
这种写法使用了 STL 中的迭代器,通过 `begin()` 和 `end()` 函数获取一个指向列表头和尾部的迭代器,然后在循环中使用 `++it` 操作来遍历列表中的元素。同时,使用 `*it` 操作可以获取当前迭代器指向的元素的引用,将其赋值给变量 `val` 可以方便地使用这个元素进行操作。需要注意,这种写法需要包含头文件 `<list>`。