怎么理解这个过程?搞不明白

在一行中输入若干个0~9的数字,数字之间用空格隔开,下面程序会统计输出0~9出现的次数,以下答案正确的是()

a=map(int,input().split())

m={}

for x in a:

m[x]=( 1 )

for k in m.keys():

print(k,   2 )

A.
1 m[x]+1 2 m[k]

B.
1 m.get(x,0)+1 2 m(k)

C.
1 m.get[x]+1 2 m(k)

D.
1 m.get(x,0)+1 2 m[k]

正确答案为: D
解析:
第一个空:如果出现了该数字,该数字对应的value就+1, 但是要考虑到没有出现过的数字,直接用m[x]取的话会报错,所以要用m.get(x, 0),如果取不到给一个默认值0
第二个空:m为字典,字典取值直接m[k]

应该是选D(更正),m.get(x,0)就是x在m中有则返回他的值,如果没有则返回0,然后+1,如此实现统计x出现的次数,然后print(k, m[k]) #先打印k的值,取出k对应的值,即k的个数,如此打印出k出现的次数。
参考链接:
python 中tag_map.get(tag, 0)什么意思?_百度知道

a=map(int,input().split())
m={}
for x in a:
#https://zhidao.baidu.com/question/182975505489332124.html
    m[x]= m.get(x,0)+1  #m.get(x,0)就是x在m中有则返回他的值,如果没有则返回0
for k in m.keys():
    print(k, m[k])  #取出m对应的值,即m的个数


img