请问这个Python代码中的第5,7,9行如何理解?谢谢!

2024-12-28 20:28:23
推荐回答(3个)
回答1:

d={}是初始化一个空的字典变量。

t是输入的名称组成的列表。for c in range(len(t)):就是遍历t列表的下标。

t[c]就是t列表中每一项,d[t[c]]=d.get(t[c],0)+1就是以t[c]作为键,d.get(t[c],0)+1作为值保存到字典中。其中d.get(t[c],0),get意思是取键值为t[c]的值,如果不存在就返回0。

所以d[t[c]]=d.get(t[c],0)+1的意思简单说:就是字典中如果存在键值t[c],则将其值+1,否则新建一个键t[c],值为1。

ls = list(d.items())意思是将字典d转换成一个由元祖组成的列表形式

ls.sort(key=lambda x:x[1], reverse=True) 这里是对上面的列表排序,由于列表包含元祖,所以key=lambda x:x[1]就是特指按列表每一项元祖的第二个元素进行排列。 reverse=True表示排序规则是逆序。

所以ls.sort(key=lambda x:x[1], reverse=True)的意思就是,将字典转换成的列表,按照字典值进行逆序排序。

for k in range(len(ls)):
zy,num=ls[k]这里就是遍历ls每项元祖,并将元祖第一个元祖赋值给zy,第二项赋值给num。

print("{}:{}".format(zy,num))如果是写在循环内,那zy,num=ls[k]这里的意思就是是将字典中键值对分别保存到遍历zy和num中,并打印。

回答2:

第5行:
比如你输入的是:A B A C
t=names.split() => t=["A","B","A","C"]
t[c] = t[0] => "A"
d.get("A",0) => 如果找到字典d里的A键,就返回它值,没找到返回0
d[t[c]]=d.get(t[c],0)+1
=>循环到第一个A是d["A"] = 0+1
=>循环到第二个A是d["A"] = 1+1 ,达到计数累计的效果
第7行
ls.sort(key=lambda x:x[1], reverse=True)
按字典的值进行排序
第9行
zy,num=ls[k]
序列解包
相当于
zy = ls[k][0]
num== ls[k][1]

回答3:

第五行 d是个字典,对行业(c)这个序列遍历,get函数是取得字典的键值,若没有此键则返回默认值,这里的默认值是0,所以这句话的意思是,遍历c统计元素的个数,并保持到字典中。
第七行 第六行ls的结果是一个元组的序列,sort函数按照元组的第2个元素排序,reverse=True是降序,所以意思是按照各行业的统计个数排序
第九行 将排完序的元组的序列一一赋值给zy,num 并打印,就是按照排列顺序以此打印职业,和职业出现的次数