我字典的结构是:
key val
item a list of values
我如何发起dict
:
dict[item] = [word]
type(dict[item]) ---> gives me list
当进入循环并尝试使用相同的键向列表中添加更多值时,dict[item].append(word)
会向我None
而dict[item] + [word]
正在工作
为什么会这样?
答案 0 :(得分:2)
dict[item].append(word)
在dict[item]
处改变了列表,函数append
的返回值为None
。dict[item] + [word]
不会改变dict[item]
的列表,只计算两个列表的串联。这相当于:
arr = [1]
res = arr + [2]
assert res == [1, 2]
assert arr == [1]
res = arr.append(2)
assert res is None
assert arr == [1, 2]
对于从问题开始工作的示例,append
的等效代码是:
dict[item] += [word]
答案 1 :(得分:0)
使用.append()
d = {'example': ['string']}
d['example'].append('test') # mutates the list
print d
>> {'example': ['string','test']}
使用列表 + 列表
d = {'example': ['string']}
d['example'] + ['test'] # return {'example':['string', 'test]} but no mutation
print d
>> {'example': ['string']}