首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python dict.fromkeys方法的坑

一、背景

在做统计的时候,经常会用到dict,而dict有一个很方便的方法fromkeys(),它可以基于一个序列和一个默认值快速生成一个dict

二、dict.fromkeys()的帮助文档

Help on built-in function fromkeys:

fromkeys(...)

dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.

v defaults to None.

三、示例

1. 默认值为字符串的示例

>>> a = [1, 2, 3]

>>> b = "hello python"

>>> c = dict.fromkeys(a, b)

2. 默认值为字典的示例

>>> a = [1, 2, 3]

>>> b = {"age": 18}

>>> c = dict.fromkeys(a, b)

, 2: {'age': 18}, 3: {'age': 18}}

四、坑

千万不要认为这个默认值在经过dict.fromkeys()的方法调用之后,在结果对象中都是一个新的对象,即c的value是不同的对象,但其实是相同的对象,无论默认值是简单的字符串类型,还是复杂的字典类型

1. 默认值为字符串的示例

>>> for key, value in c.iteritems():

... print key, value, id(value)

...

2. 默认值为字典的示例

>>> for key, value in c.iteritems():

... print key, value, id(value)

...

可以看到值的id是相同的

五、此类需求的解决办法

使用字典解析式,如下

>>> a = [1, 2, 3]

>>> c = for item in a}

, 2: {'age': 18}, 3: {'age': 18}}

>>> for key, value in c.iteritems():

... print key, value, id(value)

...

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180328G1RMBB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券