zoukankan      html  css  js  c++  java
  • python fromkeys的坑

    有个不定长的列表,想把列表中的每个值当做字典的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('14124')
    
    In [350]: res
    Out[350]: {'a': ['14124'], 'b': [], 'c': []}
  • 相关阅读:
    php数组·的方法1-数组的操作
    第十一章:DOM扩展
    第十章:DOM
    hxq的库
    第八章:BOM
    第七章:函数表达式2
    第七章:函数表达式
    第五章:引用类型(一)-Object和Array
    舌尖上的程序猿
    计算矩阵运算的乘法次数
  • 原文地址:https://www.cnblogs.com/zhang-can/p/9288313.html
Copyright © 2011-2022 走看看