def count_chars(s):
'''Return a dict that contains each character in str s as a key. The
value associated with each key is the number of times that character
occurs in s.'''
d = {}
for ch in s:
if ch in d:
d[ch] += 1
else:
d[ch] = 1
return d
我没有在代码中获得第3行,“如果ch in d”。如果字符中没有任何条目,为什么字符会出现在字典中呢?
另外,我不知道d [ch] + = 1应该是什么意思,以及为什么会有一个else语句。有人可以帮帮我吗?
答案 0 :(得分:2)
理解这样的代码的最简单方法是添加print
以查看它实际上在做什么。所以,
def count_chars(s):
'''Return a dict that contains each character in str s as a key. The
value associated with each key is the number of times that character
occurs in s.'''
d = {}
for ch in s:
if ch in d:
print('{} is in d'.format(ch))
d[ch] += 1
else:
print('{} is NOT in d'.format(ch))
d[ch] = 1
print('d is now: {}'.format(d))
return d
count_chars('abcdaaaa')
告诉你:
a is NOT in d
d is now: {'a': 1}
b is NOT in d
d is now: {'a': 1, 'b': 1}
c is NOT in d
d is now: {'a': 1, 'c': 1, 'b': 1}
d is NOT in d
d is now: {'a': 1, 'c': 1, 'b': 1, 'd': 1}
a is in d
d is now: {'a': 2, 'c': 1, 'b': 1, 'd': 1}
a is in d
d is now: {'a': 3, 'c': 1, 'b': 1, 'd': 1}
a is in d
d is now: {'a': 4, 'c': 1, 'b': 1, 'd': 1}
{'a': 4, 'c': 1, 'b': 1, 'd': 1}
答案 1 :(得分:1)
因为每次进行循环时,都要在字典中添加或更新密钥。如果密钥已存在,则表示您正在更新其值。
答案 2 :(得分:1)
与许多其他脚本语言不同,Python不会自动创建元素。 In the docs您将看到方法getdefault()和setdefault(),这对于这样的情况很有用。您也可以按照this thread。
中的描述对dict进行子类化答案 3 :(得分:1)
我没有在代码中获得第3行,“如果ch in d”。
这正是它所说的内容:它会检查ch
中是否有d
。
如果字符中没有任何条目,为什么字符会出现在字典中呢?
因为它可能最终。代码在for循环中,循环的重点是安排代码运行多次。其中一些运行将内容放入字典中。
另外,我不知道d [ch] + = 1应该是什么意思
这意味着语言参考意味着什么。
以及为什么会有其他声明。
因为当条件不正确时我们想要做的事情,以及当它出现时要做的事情。