首页 新闻 会员 周边 捐助

输入 苹果 香蕉 芒果

0
[已关闭问题] 关闭于 2025-09-18 10:08

fo = open("PY202.txt","w")
txt = input("请输入类型序列: ")
d = {}
lst = txt.split(" ")
for i in lst:
d[i] = d[i] + 1
print(d)

 lst = txt.split(" ") 中间要显示输空格" "非""

Traceback (most recent call last):
File "D:\KSWJJ\66000001\PY202.py", line 12, in <module>
d[i] = d[i] + 1
KeyError: '苹果'

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-09-18 08:18
< >
分享
所有回答(1)
0

默认 split() 按任意空白切,并把连续空白当作一个分隔符;
显式 split(' ') 只认单个空格字符,连续空格会产生空串。

分割后得到的每一个元素都是 str 类型,不会变成数字、列表或其他类型。

parts = "1 2.5 3".split() # ['1', '2.5', '3']
parts = "1,2.5,3".split(',') # ['1', '2.5', '3']

parts 里的三项全是字符串,想拿它们当整数、浮点数用,必须自己再转:
 nums = [float(x) for x in parts]   # [1.0, 2.5, 3.0]
 
d[i]相当于
d.__getitem__(i)

 d.get(i, 0)→ 存在就返回对应值,不存在返回 0,绝不抛异常

两者走的 CPython 内部路径完全不同:
  • PyDict_GetItemWithError() 会先把键查一遍,找不到就置 KeyError 并返回 NULL;
  • dict.get() 调用的是 PyDict_GetItem(),找不到时直接返回你给的 default,不抛异常。
 
_java_python | 园豆:984 (小虾三级) | 2025-09-18 10:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册