这是我的清单,
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]
并在第二种情况下获得正确输出的原因相同?
答案 0 :(得分:3)
dict.update
始终返回None
,因此在第一个示例中,您追加None
三次,而在第二个示例中,您将dict对象追加三次。
答案 1 :(得分:2)
因为newo.update()没有返回任何内容(所以你得到None)。
答案 2 :(得分:1)
下面
temp_lst.append(newo.update(Name=i.get('name'),Lastname=i.get('lastname')))
您实际上是将newo.update
的返回值添加到列表中,恰好是None
。在第一个示例中,您首先更新dict,然后将dict本身附加到temp_lst
。这有所不同