本问题已经有最佳答案,请猛点这里访问。
sentence ="The quick brown fox jumped over the lazy dog."
characters = {}
for character in sentence:
characters[character] = characters.get(character, 0) + 1
print(characters)
我不明白characters.get(character, 0) + 1在做什么,其余的看起来都很简单。
在geta的方法(例如characters样)的作品就像一个字典索引,除非,如果密钥是失踪,而不是提高它返回A KeyError默认值(如果你只是一个呼叫.get论点的关键,默认值是None)。
这样的等效的Python函数调用(在myget(d, k, v)就像d.get(k, v)可能是:
def myget(d, k, v=None):
try: return d[k]
except KeyError: return v
在示例代码在你的问题显然是试图occurrences count数每个字符:如果它已经有一个给定的字符计数get归来,它(这只是一个incremented red),其他get返回0(这是正确的,incrementing 1at a字符的第一个发生在字符串)。
明白什么事吧,让我们把一个字母(可超过一个后续)在字符串和当它是通过环。
记住,我们是一个启动开关"人物词典
characters = {}
我想挑选一个"E"。让我们通过字符"E"(在"for the Word)第一次通过循环。我认为它的第一字符去通过环和我的一个替代变量的值:
for 'e' in"The quick brown fox jumped over the lazy dog.":
{}['e'] = {}.get('e', 0) + 1
characters.get(E 0)的关键是寻找Python的"E"在词典中。如果它发现它返回0。因为这是第一时间E是通过循环传递,字符"E"是没有发现在词典然而,所以get方法返回0。这是然后添加到0值1(目前在字符的字符(字符characters.get [ ] = 0)+ 1个方程)。完成后的第一环使用字符"E",现在我们有一个进入的样本词典:{e}:1
现在是:词典
characters = {'e': 1}
现在,让我们通过在第二个"E"(发现在Word jumped)通过相同的循环。我认为它的第二字符去通过环和我会更新与新的变量的值:
for 'e' in"The quick brown fox jumped over the lazy dog.":
{'e': 1}['e'] = {'e': 1}.get('e', 0) + 1
这里的get方法,密钥输入"E’,其价值是1。我们添加此到另1 characters.get(字符,0 + 1)2 AS和得到的结果。
当我们在运用这个人物(角色characters.get [字符] = 0)+ 1个方程:
characters['e'] = 2
应该明确的是,负载方程assigns a新价值2个"E"键已经存在。因此,现在是:词典
characters = {'e': 2}
在这里docs.python.org启动http:////datastructures.html教程#词典
然后在http://docs.python.org /图书馆/ stdtypes.html #映射类型的
然后在http://docs.python.org /图书馆/ stdtypes.html # dict.get
characters.get( key, default )
key is a character
default is 0
如果字符是在characters词典,词典,你得到的对象。
如果需要,你可以为0。
语法:
get(key[, default])
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError.
如果D是一个字典,然后给我d.get(k, v)均值的值K,K是在D,除非在案件,其中V是给我用它来得到当前计数的字符,它应该开始在0如果字符不被使用之前。
这是一个相当古老的一个湖,但这看起来像一个时代的时候,那些已被书面没有什么知识的语言特征。一个新的collections图书馆存在的主要用途。
from collections import Counter
letter_counter = Counter()
for letter in 'The quick brown fox jumps over the lazy dog':
letter_counter[letter] += 1
>>> letter_counter
Counter({' ': 8, 'o': 4, 'e': 3, 'h': 2, 'r': 2, 'u': 2, 'T': 1, 'a': 1, 'c': 1, 'b': 1, 'd': 1, 'g': 1, 'f': 1, 'i': 1, 'k': 1, 'j': 1, 'm': 1, 'l': 1, 'n': 1, 'q': 1, 'p': 1, 's': 1, 't': 1, 'w': 1, 'v': 1, 'y': 1, 'x': 1, 'z': 1})
在这个例子中被数的,但显然,这些结构是否是你想要的需要你。
As for the dict.get(a_key, default_value)已经有几个答案,这个问题,这个方法是返回值的密钥,或默认值,你_供应。第一个参数是你要找的关键,第二个参数是默认密钥时,这是不现实的。