首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新OrderedDict不获取

更新OrderedDict不获取
EN

Stack Overflow用户
提问于 2014-03-11 14:36:02
回答 3查看 649关注 0票数 0

这是我的名单

代码语言:javascript
复制
z=[OrderedDict([('name', 'abc'), ('lastname', 'lastname.'), ('address', 'Mumbai'), ('cell', '21******')]), OrderedDict([('name', 'abc'), ('lastname', 'lastname.'), ('address', 'Mumbai'), ('cell', '21******')]), OrderedDict([('name', 'xyz'), ('lastname', 'lastnamexyz.'), ('address', 'Heaven'), ('cell', '2156******')])]

我在试着换这本字典的钥匙,

我想做的是,

代码语言:javascript
复制
>>> temp_lst=[]
>>> for i in z:
    newo=OrderedDict()
    temp_lst.append(newo.update(Name=i.get('name'),Lastname=i.get('lastname')))
>>> print temp_lst
    [None, None, None]

此代码正在将tmp_lst打印为[None, None, None]

但当我试着跟随,得到正确的结果。

代码语言:javascript
复制
>>> for i in z:
    newo=OrderedDict()
    newo.update(Name=i.get('name'),Lastname=i.get('lastname'))
    temp_lst.append(newo)   
>>> temp_lst
[OrderedDict([('Lastname', 'lastname.'), ('Name', 'abc')]), OrderedDict([('Lastname', 'lastname.'), ('Name', 'abc')]), OrderedDict([('Lastname', 'lastnamexyz.'), ('Name', 'xyz')])]

这两种代码看起来都是一样的,那么为什么在第一种情况下得到[None, None, None],在第二种情况下得到正确的输出呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-11 14:39:16

dict.update总是返回None,因此在第一个示例中,您添加了三次None,而在第二个示例中,您追加了三次dict对象。

票数 3
EN

Stack Overflow用户

发布于 2014-03-11 14:39:10

因为newo.update()不返回任何东西(所以没有返回)。

票数 2
EN

Stack Overflow用户

发布于 2014-03-11 14:41:33

这里

代码语言:javascript
复制
temp_lst.append(newo.update(Name=i.get('name'),Lastname=i.get('lastname')))

实际上,您正在将newo.update的返回值添加到列表中,该列表恰好是None。在第一个示例中,首先更新dict,然后将dict本身附加到temp_lst中。那就不一样了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22328894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档