如何向现有词典中添加关键字?它没有.add()方法。
当前回答
首先检查密钥是否已存在:
a={1:2,3:4}
a.get(1)
2
a.get(5)
None
然后可以添加新的键和值。
其他回答
您可以创建一个:
class myDict(dict):
def __init__(self):
self = dict()
def add(self, key, value):
self[key] = value
## example
myd = myDict()
myd.add('apples',6)
myd.add('bananas',3)
print(myd)
给予:
>>>
{'apples': 6, 'bananas': 3}
这是我在这里没有看到的另一种方式:
>>> foo = dict(a=1,b=2)
>>> foo
{'a': 1, 'b': 2}
>>> goo = dict(c=3,**foo)
>>> goo
{'c': 3, 'a': 1, 'b': 2}
可以使用字典构造函数和隐式扩展来重建字典。此外,有趣的是,这种方法可以用于控制字典构建期间的位置顺序(Python 3.6之后)。事实上,Python 3.7和更高版本保证了插入顺序!
>>> foo = dict(a=1,b=2,c=3,d=4)
>>> new_dict = {k: v for k, v in list(foo.items())[:2]}
>>> new_dict
{'a': 1, 'b': 2}
>>> new_dict.update(newvalue=99)
>>> new_dict
{'a': 1, 'b': 2, 'newvalue': 99}
>>> new_dict.update({k: v for k, v in list(foo.items())[2:]})
>>> new_dict
{'a': 1, 'b': 2, 'newvalue': 99, 'c': 3, 'd': 4}
>>>
以上是使用字典理解。
让我们假设你想生活在一个不可变的世界中,不想修改原来的内容,而是想创建一个新的dict,这是向原来的内容添加新密钥的结果。
在Python 3.5+中,您可以执行以下操作:
params = {'a': 1, 'b': 2}
new_params = {**params, **{'c': 3}}
Python 2的等价物是:
params = {'a': 1, 'b': 2}
new_params = dict(params, **{'c': 3})
在执行以下任一操作之后:
params仍然等于{‘a‘:1,‘b‘:2}
and
new_params等于{‘a‘:1,‘b‘:2,‘c‘:3}
有时您不想修改原始文件(您只想得到添加到原始文件的结果)。我觉得这是一个令人耳目一新的替代方案:
params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params['c'] = 3
or
params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params.update({'c': 3})
参考文献:在表达式“dict(d1,**d2)”中,“**”是什么意思?
这个流行的问题涉及合并字典a和b的函数方法。
下面是一些更简单的方法(在Python 3中测试过)。。。
c = dict( a, **b ) ## see also https://stackoverflow.com/q/2255878
c = dict( list(a.items()) + list(b.items()) )
c = dict( i for d in [a,b] for i in d.items() )
注意:上面的第一个方法仅在b中的键是字符串时有效。
要添加或修改单个元素,b字典将仅包含该元素。。。
c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a'
这相当于。。。
def functional_dict_add( dictionary, key, value ):
temp = dictionary.copy()
temp[key] = value
return temp
c = functional_dict_add( a, 'd', 'dog' )
dico[“new key”]=“value”
推荐文章
- 有没有办法在python中做HTTP PUT
- “foo Is None”和“foo == None”之间有什么区别吗?
- 类没有对象成员
- Django模型“没有显式声明app_label”
- 熊猫能自动从CSV文件中读取日期吗?
- 在python中zip的逆函数是什么?
- 有效的方法应用多个过滤器的熊猫数据框架或系列
- 如何检索插入id后插入行在SQLite使用Python?
- 我如何在Django中添加一个CharField占位符?
- 如何在Python中获取当前执行文件的路径?
- 我如何得到“id”后插入到MySQL数据库与Python?
- super()失败,错误:TypeError "参数1必须是类型,而不是classobj"当父不继承对象
- Python内存泄漏
- 实现嵌套字典的最佳方法是什么?
- 如何在tensorflow中获得当前可用的gpu ?