首先,我是Python的初学者
我有这本词典:
d={'Name': ('John', 'Mike'),
'Address': ('LA', 'NY')}
现在我想在这样的键中添加更多值。
d={'Name': ('John', 'Mike', 'NewName'),
'Address': ('LA', 'NY', 'NewAddr')}
我尝试更新并追加,但我认为它只适用于列表/元组,并且我尝试使用d.items()将其放入列表中,然后覆盖d字典,但我认为它的杂乱和不必要?
python是否有直接的方法来执行此操作?
答案 0 :(得分:6)
元组()
是一种不可变类型,这意味着您无法更新其内容。您应该首先将其转换为list
以便变异:
>>> d = {'Name': ['John', 'Mike'],
'Address': ['LA', 'NY']}
>>> d['Name'].append('NewName')
>>> d['Address'].append('NewAddr')
或者,您可以从现有元组创建一个新元组以及要添加的字符串:
>>> d['Name'] = d['Name'] + ('NewName',)
>>> d['Address'] = d['Address'] + ('NewAddr',)
答案 1 :(得分:5)
只需将tuple
添加到existing value
d={'Name': ('John', 'Mike'),
'Address': ('LA', 'NY')}
d["Name"]=d["Name"]+("lol",)
print d
答案 2 :(得分:3)
我确定你应该使用一个list
作为字典的值而不是tuple
是不可变的。
d={'Name': ['John', 'Mike'], 'Address': ['LA', 'NY']}
d['name'].append('NewName')
d['Address'].append('NewAddr')
然后,d
是
{'Name': ['John', 'Mike', 'NewName'], 'Address': ['LA', 'NY', 'NewAddr']}
答案 3 :(得分:1)
你可以做到
>>> d['Name'] += "NewName",
>>> d
{'Name': ('John', 'Mike', 'NewName'), 'Address': ('LA', 'NY')}
在" NewName"之后不要忘记,
。因为你想把它添加到元组。
答案 4 :(得分:1)
我的建议是使用defaultdict
列表:
import collections
d = collections.defaultdict(list)
d['Name'] += 'John'
d['Name'] += 'Mike'
print (d)
defaultdict(<type 'list'>, {'Name': ['John', 'Mike']})
这避免了创建初始列表的特殊情况。
答案 5 :(得分:0)
d['Name'] = d['Name'] + ('NewName',) # note the trailing comma!
由于元组是不可变的,你需要通过将它与新元素组合成一个新元组,从现有元组创建一个新元组。或者使用列表而不是元组:
d = {'Name': ['John', 'Mike']}
d['Name'].append('NewName')
第二种方法更可取,因为每次要添加新名称时都不会创建新元组。
FWIW,对于元组,你使用正常括号()
,并使用角度[]
作为列表(如果你是初学者,差异可能不会很明显)。
编辑:最后一段绝对不是侮辱或其他任何内容,它是出于好意而写的,但也许可以改写一下。我只是想确保创建tuple
和list
之间的语法差异,因为差异很小,有时会在Python的新手之间产生混淆。如果听起来粗鲁,我道歉。
答案 6 :(得分:0)
如果您正在使用元组,则每次元组不可变时都必须重新创建元组:
d[key] = d.get(key, tuple()) + (newelm,)
但如果你要追加你最好使用list:
d = { "key1" : ["val1a", "val2a"],
"key2" : ["val2"] }
try:
d[key].append(newelm)
except KeyError:
d[key] = [newelm]
如果您确定该密钥已经存在(或者如果它不存在则会出现错误),则无需使用try
- except
:
d[key].append(newelm)