python fromkeys的坑
2024-09-01 15:58:53
有个不定长的列表,想把列表中的每个值当做字典的key, 初始值为空列表,于是想到了fromkeys这个方法
In [337]: l = ['a','b','c'] In [338]: res = dict.fromkeys(l, []) In [339]: res
Out[339]: {'a': [], 'b': [], 'c': []} In [340]: res['a'].append(123) In [341]: res
Out[341]: {'a': [123], 'b': [123], 'c': [123]}
看,问题出现了,本来只想给res['a']赋值,结果所有的键值对都被赋值了,这是因为,用fromkeys设置默认值的时候,如果值是[], 表示的是一个对象,并且是同一个对象,就和函数的默认参数设置成空列表是一个意思
改成这样的话就没问题
In [342]: res = {'a': [], 'b': [], 'c': []} In [343]: res['a'].append(123) In [344]: res
Out[344]: {'a': [123], 'b': [], 'c': []}
但是这种没办法处理不定长的列表了
还要一种方法:
In [347]: res = dict([(k, []) for k in l]) In [348]: res
Out[348]: {'a': [], 'b': [], 'c': []} In [349]: res['a'].append('') In [350]: res
Out[350]: {'a': [''], 'b': [], 'c': []}
最新文章
- 【FLUENT案例】02:DPM模型
- 关于u32中查找和定位最后到bit Number of 1 Bits
- Objective-C:Foundation框架-常用类-NSMutableString
- PS要点
- SqlDataAdapter的update方法
- python(6)-shutil模块
- 终端神器 iterm
- js冒泡事件示例
- 拉姆达表达式(Lambda Expressions)
- Nodejs解析HTML网页模块 jsdom
- Problem F: Exponentiation
- Unity3d之MiniJson与LitJson之间的较量
- Google免费GPU使用教程
- CC++语法::数组名退化(array decaying)
- About me &; 留言板
- Confluence设置MySQL数据库报错:必须使用'READ-COMMITTED'作为默认隔离级别。
- sql server 小技巧(4) Sql server 排序时让空值排在最后
- 【CF884F】Anti-Palindromize 费用流
- Web-JSP表单字符验证
- Itext读取PDF模板文件渲染数据后创建新文件
热门文章
- Hi3518EV300编译U-Boot和内核报错:loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt <; (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))&#39; failed. Aborted (core dumped)
- callback回调函数【转】
- Cuba studio框架中使用thymeteaf模板时中文乱码
- 命令执行sql
- 53、listview、expandableListview如何选中时保持高亮?
- seajs引入jquery
- Android App程序结构
- [oldboy-django][2深入django]django一个请求的生命周期 + WSGI + 中间件
- jquery的html、text、val的用法
- LAMP第一部分安装mysql -apache -php