第一行输入一个正整数N,随后的N行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18“),将字符串转为形如 {“name“:“Tom“,“age“:18} 的字典,按顺序加入到列表中,得到
题目:第一行输入一个正整数N,随后的N行各输入一个人的姓名和年龄,中间用空格分隔(形如 "Tom 18"),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其升序排序输出。
样例输入:
4
Tom 18
Jerry 47
Cat 20
Doge 33
样例输出:
[{'name': 'Tom', 'age': 18}, {'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}]
[{'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}, {'name': 'Tom', 'age': 18}]
思路:题目中要运用到将字符串转化为字典,再将字典加入到列表,最后用列表的sorb函数进行排序,然后输出。
代码:
n=int(input())
d={}
ls= []
a = {}
for i in range (n):
a[i]=input().split() #这里运用到动态变量,可以用一个集合a来存储动态变量
d["name"] = a[i][0]
d["age"] = a[i][1]
ls.append(d.copy()) #看下面的说明,必须先开辟空间
def cmp1(a):
return a['age']
def cmp2(a):
return a['name']
ls.sort(key = cmp1)
print(ls)
ls.sort(key = cmp2)
print(ls)
说明
为什么要先开辟空间再加入:
在往列表中添加字典时若使用为键赋值的方式,则会出现前面的字典数据被最后一条字典数据覆盖。
list = []
a = {'a':'1', 'b':'1'}
list.append(a)
a['a'] = '2'
a['b'] = '2'
list.append(a)
[{‘a’: ‘2’, ‘b’: ‘2’}, {‘a’: ‘2’, ‘b’: ‘2’}]
列表的append方法在为其添加数据的时候并没有将完整的字典数据都拷贝的列表当中(为了提高空间的使用率),而是存储字典数据所在地址。
而以上这种方式修改的是该内存地址下的数据,这就导致了问题。
每次为列表添加数据的时候,在内存中其他位置创建与该字典相同的数据并加入列表(若字典内包含列表,需要使用deepcopy)
有关sorb函数,大家可以去看看这篇文章:
Python 列表 sort() 方法 (w3school.com.cn)https://www.w3school.com.cn/python/ref_list_sort.asp
看到这里啦,点个赞呗~
第一行输入一个正整数N,随后的N行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18“),将字符串转为形如 {“name“:“Tom“,“age“:18} 的字典,按顺序加入到列表中,得到相关推荐
- 7-4 使用递归输出杨辉三角形 (18 分)输出杨辉三角形,用户输入一个正整数n,输出n行的直角三角形的杨辉三角。要求使用递归函数实现
输入格式: 输入一个正整数n 输出格式: 输出n行的直角三角形的杨辉三角,两个数之间用空格分隔,末尾无多余的空格. 输入样例: 在这里给出一组输入.例如: 3 输出样例: 在这里给出相应的输出.例如: ...
- 【输入一个正整数,反转这个数字,例如输入123,输出321】
输入一个正整数,反转这个数字,例如输入123,输出321 代码实现: #include<iostream> using namespace std; int main() {int num ...
- c语言输出整数n的所有素数因子,输入一个正整数 输出它的所有质数因子的c语言程序...
编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. #includevoidmain(){inti,z,x,y,j;printf("pleaseinput ...
- [C语言]字符图案:从键盘输入一个正整数n(代表行数),打印如下n行图案。注意第一行左侧不留空白,从第二行开始,每行左侧增加1个空格。请使用数组实现。***** ***** *****
输入 :输入一个正整数n(0 < n <= 70). 输出 :输出n行图案. 输入示例 3 输出示例 ***** ***** ***** 数据范围 输入为int范围的整数 #incl ...
- c语言用循环输出塔状五行,从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式, 输出杨辉三角形的前n行。请采用循环控制语句来实现。...
Scanner sc=new Scanner(System.in); System.out.println("请输入一个正整数:"); int ss=sc.nextInt(); i ...
- 蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。 输入一个正整数 n(<=10000) 输出 m 行(n有m
问题描述 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27. 输入一个正整数 n(<=10000) 输出 m 行(n有m种表示法),每行是两个正整数a,b ...
- 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
一.题目 描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) 数据范围: 1≤n≤2×109+14 1 \le n \le 2 ...
- 输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)
//功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) //最后一个数后面也要有空格import java.util.Scanner ...
- 输入一个正整数n输出n行,每行若干个星号,组成三角形。
1370: 画图---3 时间限制: 1 Sec 内存限制: 128 MB 提交: 415 解决: 239 [提交] [状态] [讨论版] [命题人:hexl] 题目描述 小明学会画几何图形了,他能根 ...
- 从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式, 输出杨辉三角形的前n行。请采用循环控制语句来实现。...
Scanner sc=new Scanner(System.in); System.out.println("请输入一个正整数:"); int ss=sc.nextInt(); i ...
最新文章
- 实用线性代数和凸优化 Convex Optimization
- vs调用堆栈窗口怎么弄出来_从零开始(1)栈帧、调用约定
- 下一步工作,尽量将代码整理归拢成可以随意组合拆装的代码块。
- 【今晚七点半】:主编对话李宇翔——我所经历的“前端”开发
- dbms标识符无效_DBMS中的聚合运算符(分组依据和具有子句)
- 如何删除textarea的移动版Safari的阴影?
- 中科院开发者公开道歉:将木兰编程语言夸大为“完全自主开发”
- PHP100视频教程(2012-2013版)下载地址及密码
- 服务器网络连接显示100m,本地连接速度是1G200M的宽带为什么只有100M网速
- 坚果云和亿方云该如何选?
- 学习记录609@python实现数据样本的过采样与欠采样
- 逻辑回归LR vs 支持向量机SVM
- xmind新手入门教程,xmind怎么用?
- 视频号|常见违规限流情况及解除方法
- CF831A-Unimodal Array(单峰阵列)
- latex里图片大小如何调整_怎样用latex修改插入图形的大小,使图形大小一致。...
- 分享几张与互联网相关的搞笑图片
- scaffold-dbcontext 命令使用说明
- 没想到吧!玩游戏还能学习编程,这15款编程游戏你一定要看看
- 秋招面/笔试题目集合——06
热门文章
- python三大器物---装饰器
- java素数判断1到100_Java 求1-100以内的所有素数,判断一个数是不是素数
- vpay商城系统开发app
- “学习金字塔理论”--了解,认知与实践
- 【实战】还记得校内网么(人人网)?当年的同学都在哪?爬取一下就知道
- matlab二叉树期权定价,二叉树期权定价模型
- perl练习——FASTA格式文件中序列GC含量计算perl数组排序如何获得下标或者键
- 转载-解决word导出pdf图片变模糊的问题
- 认识BLE 5协议栈 —— 直接测试模式
- 武汉Web前端开发薪水没有别人高?先弄明白这4点