第一行输入一个正整数 N,随后的N 行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18” ),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其排序输出
时间: 2023-06-18 22:05:09 浏览: 122
下面是代码实现:
```python
N = int(input())
lst = []
for i in range(N):
name, age = input().split()
d = {"name": name, "age": int(age)}
lst.append(d)
# 根据年龄排序
lst_age = sorted(lst, key=lambda x: x["age"])
print("按年龄排序:", lst_age)
# 根据姓名排序
lst_name = sorted(lst, key=lambda x: x["name"])
print("按姓名排序:", lst_name)
```
实现思路:
1. 首先读入一个整数 N,表示有 N 个人的信息需要输入。
2. 然后依次读入每个人的姓名和年龄,将其转化为形如 {"name":"Tom","age":18} 的字典,加入到列表 lst 中。
3. 使用 sorted 函数,根据 lambda 函数中指定的键值进行排序,分别得到按年龄排序的列表 lst_age 和按姓名排序的列表 lst_name。
4. 最后将两个列表输出即可。
注意:
1. 读入年龄时需要使用 int() 函数将字符串转化为整数。
2. sorted 函数中的 key 参数指定了排序时使用的键值,lambda 函数指定了根据哪个键值进行排序。
相关问题
第一行输入一个正整数 N,随后的N 行各输入一个人的姓名和年龄,中间用空格分隔
下面是一个 Python 的例子代码,可以实现输入 N 个人的姓名和年龄,并将它们存储在一个列表中:
```python
N = int(input())
people_list = []
for i in range(N):
name, age = input().split()
age = int(age)
person = {'name': name, 'age': age}
people_list.append(person)
```
在这个代码中,首先通过 `input()` 函数输入一个正整数 N,表示将要输入的人数。然后使用一个 for 循环,循环 N 次,每次输入一个人的姓名和年龄,并将其存储在一个字典 `person` 中。最后将这个字典添加到一个列表 `people_list` 中。
注意,在输入年龄时,需要使用 `int()` 函数将输入的字符串转换为整数类型。
第一行输入一个正整数N,随后的N行各输入一个人的姓名和年龄,中间用空格分隔(形如 "Tom 18"),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其升序排序输出。
好的,我可以帮你实现这个需求。请注意不要输入个人隐私信息哦~
```python
# 输入正整数N
N = int(input())
# 定义一个空列表用于存储年龄和姓名的字典
lst = []
# 循环读入N个人的信息并将其转化为字典
for i in range(N):
name, age = input().split()
d = {"name": name, "age": int(age)}
lst.append(d)
# 根据年龄和姓名对字典进行排序
lst.sort(key=lambda d: (d["age"], d["name"]))
# 输出排序后的结果
for d in lst:
print(d["name"], d["age"])
```
运行示例:
```
输入:
4
Tom 20
Jack 18
Lucy 20
John 25
输出:
Jack 18
Lucy 20
Tom 20
John 25
```
其中,首先输入一个正整数N,表示有N个人的信息需要输入。然后,循环读入N行信息,每行信息包括一个人的姓名和年龄,并将其转化为字典,存储在列表lst中。接着,根据年龄和姓名对字典进行排序,最后输出排序后的结果。注意,在排序时,使用了lambda函数对字典进行排序。
阅读全文