理解Python中的.get()方法

Understanding .get() method in Python

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
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)可能是:

1
2
3
def myget(d, k, v=None):
  try: return d[k]
  except KeyError: return v

在示例代码在你的问题显然是试图occurrences count数每个字符:如果它已经有一个给定的字符计数get归来,它(这只是一个incremented red),其他get返回0(这是正确的,incrementing 1at a字符的第一个发生在字符串)。


明白什么事吧,让我们把一个字母(可超过一个后续)在字符串和当它是通过环。

记住,我们是一个启动开关"人物词典

1
characters = {}

我想挑选一个"E"。让我们通过字符"E"(在"for the Word)第一次通过循环。我认为它的第一字符去通过环和我的一个替代变量的值:

1
2
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

现在是:词典

1
characters = {'e': 1}

现在,让我们通过在第二个"E"(发现在Word jumped)通过相同的循环。我认为它的第二字符去通过环和我会更新与新的变量的值:

1
2
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个方程:

1
characters['e'] = 2

应该明确的是,负载方程assigns a新价值2个"E"键已经存在。因此,现在是:词典

1
characters = {'e': 2}


在这里docs.python.org启动http:////datastructures.html教程#词典

然后在http://docs.python.org /图书馆/ stdtypes.html #映射类型的

然后在http://docs.python.org /图书馆/ stdtypes.html # dict.get

1
2
3
4
5
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图书馆存在的主要用途。

1
2
3
4
5
6
7
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)已经有几个答案,这个问题,这个方法是返回值的密钥,或默认值,你_供应。第一个参数是你要找的关键,第二个参数是默认密钥时,这是不现实的。