这是我的名单
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******')])]我在试着换这本字典的钥匙,
我想做的是,
>>> 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]
但当我试着跟随,得到正确的结果。
>>> 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],在第二种情况下得到正确的输出呢?
发布于 2014-03-11 14:39:16
dict.update总是返回None,因此在第一个示例中,您添加了三次None,而在第二个示例中,您追加了三次dict对象。
发布于 2014-03-11 14:39:10
因为newo.update()不返回任何东西(所以没有返回)。
发布于 2014-03-11 14:41:33
这里
temp_lst.append(newo.update(Name=i.get('name'),Lastname=i.get('lastname')))实际上,您正在将newo.update的返回值添加到列表中,该列表恰好是None。在第一个示例中,首先更新dict,然后将dict本身附加到temp_lst中。那就不一样了
https://stackoverflow.com/questions/22328894
复制相似问题