L = ['you','me','you','me','you','me','you']
D = {}
for i in L:
D[i] += 1
print(D)

执行以下代码会发生错误

Traceback (most recent call last):
File line 4, in <module>
D[i] += 1
KeyError: 'you' Process finished with exit code 1

为什么呢?因为我们在定义字典的时候没设置默认值,电脑找不到相应对象,自然就报错了。

很简洁的解决方法:

  • 用setdefault()函数设置初始值
    L = ['you','me','you','me','you','me','you']
    D = {}
    for i in L:
    D[i] = D.setdefault(i,0) + 1
    print(D)
  • 用get()将找不到的元素由默认的返回None变为返回为0
    L = ['you','me','you','me','you','me','you']
    D = {}
    for i in L:
    D[i] = D.get(i,0) + 1
    print(D)

是不是比用if判断语句方便不少,其实优秀的程序员和一般的程序员在这种细节与简洁处便足以见分晓~下面给出不善于运用python的人儿的写法

# 麻烦的方法
L = ['you','me','you','me','you','me','you']
D = {}
for i in L:
if i in D:
D[i] += 1
else:
D[i] = 0
print(D)

python字典设置初始值setdefault()与get()的更多相关文章

  1. ArcGIS自定义工具箱-自增字段(可以设置初始值和步长)

    ArcGIS自定义工具箱-自增字段(可以设置初始值和步长) 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:字段值初始值为设定值(默认为0),每次增加一个步长( ...

  2. keras embeding设置初始值的两种方式

    随机初始化Embedding from keras.models import Sequential from keras.layers import Embedding import numpy a ...

  3. Linux root设置初始值的方法

    Linux root设置初始值的方法 ubuntu默认不允许使用root登录,因此初始root账户是不能使用的,需要在普通账户下利用sudo权限修改root密码. 在终端输入sudo passwd r ...

  4. python字典改变value值方法总结

    今天这篇文章中我们来了解一下python之中的字典,在这文章之中我会对python字典修改进行说明,以及举例说明如何修改python字典内的值.我们开始进入文章吧. 首先我们得知道什么是修改字典 修改 ...

  5. Python 字典(键值对)

    Python 字典(键值对) 创建字典 特性:字典中的键不能变,而且唯一 格式:变量名={"键1":值1,"键2":值2} 函数 作用 dict() 强制转换为 ...

  6. 齐博x1给表单某个字段设置初始值

    自定义表单虽然后台可以设置默认初始值,但是有时候想在前台动态设置初始值的话,可以在URL中添加该字段名,给他动态赋值即可.比如下面的price字段就是动态赋值的.

  7. python 字典中 重复值去除

    tuple_r_dict = lambda _dict: dict(val[::-1] for val in _dict.items()) # Python3.x tuple_r_dict(tuple ...

  8. datetime-local设置初始值

    //全局变量 var format = ""; //构造符合datetime-local格式的当前日期 function getFormat(){ format = "& ...

  9. 解决laydate动态设置初始值的问题

    //初始化//注意:我这里是时间范围选择,所以定义了range属性.var timeScope = laydate.render({ elem: '#time_scope', range: '~', ...

随机推荐

  1. django之block extend标签

    class ExtendsNode(Node): must_be_first = True context_key = 'extends_context' def __init__(self, nod ...

  2. maven项目里的mapper不被加载,解析

    出现这个错误是因为maven加载配置文件是从resource里加载的,所以要配置一下

  3. electron 项目的搭建方式,借助 node 和 npm

    1,首先确定安装了 node 和 npm 2,创建一个文件夹,如 aa 3,CMD 命令进入到 aa,用 npm 命令初始化一个项目 4, npm -init 根据提示完成配置 5,安装 electr ...

  4. arguments.callee 和 caller

    arguments arguments它是一个类数组对象,包含着传入函数中的所有参数.虽然 arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属性,该属性是一个指 ...

  5. eclipse 代码检查插件使用

    本文是按照以下这篇文章进行实践而来. 因此请参照:   https://www.ibm.com/developerworks/cn/java/j-ap01117/index.html 五种插件: Ch ...

  6. Servlet3模块化应用中,@Controller没有被注入,导致出现:No mapping found for HTTP request with URI [/xxx/xxx] in DispatcherServlet with name 'springmvc'

    问题描述:Servlet3模块化应用中,@Controller没有被注入,导致出现: org.springframework.web.servlet.DispatcherServlet noHandl ...

  7. 批量杀死多个进程 linux kill

    批量杀进程 -| “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程. “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID,也有使用aw ...

  8. 2.Geany安装后编译器配置

    生成 --> 设置生成命令 -->  Compile & Execute : C:\Users\29742\AppData\Local\Programs\Python\Python ...

  9. C++“隐藏实现,开放接口”的实现方案

    为什么要有接口? 接口就是一个程序与其它程序交流的窗口.就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了. Java程 ...

  10. DO and DOES Reduction

    DO and DOES Reduction Share Tweet Share Tagged With: DO and DOES Reductions ‘Do’ and ‘does’ can be r ...