python3函数到concat python字典不起作用
我总是得到一本空字典python3函数到concat python字典不起作用,python,dictionary,Python,Dictionary,我总是得到一本空字典 #!/usr/local/bin/python3 dic1={1:10, 2:20} dic2={3:30, 4:40} dic3={5:50,6:60} dictNew = {} def concatDict(dictCon): dictNew = dict.update(dictCon) return dictNew concatDict(dic1) concatDict(dic2) concatDict(dic3) print(dictN
#!/usr/local/bin/python3
dic1={1:10, 2:20}
dic2={3:30, 4:40}
dic3={5:50,6:60}
dictNew = {}
def concatDict(dictCon):
dictNew = dict.update(dictCon)
return dictNew
concatDict(dic1)
concatDict(dic2)
concatDict(dic3)
print(dictNew)
dictNew没有从函数调用中得到更新
有人能给我指出正确的方向吗?你想用
dictCon
字典参数更新dictNew
。由于字典是可变的,您不需要保存或返回结果,因为dictNew
将发生变化:
#!/usr/local/bin/python3
dic1={1:10, 2:20}
dic2={3:30, 4:40}
dic3={5:50,6:60}
dictNew = {}
def concatDict(dictCon):
dictNew.update(dictCon)
concatDict(dic1)
concatDict(dic2)
concatDict(dic3)
print(dictNew)
其中:
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}
但是请注意,您的函数实际上只是屏蔽
dictNew.update
,因此您最好使用该方法调用而不是此包装函数:
...
dictNew.update(dic1)
dictNew.update(dic2)
dictNew.update(dic3)
...
另一种方法是使用
**
-运算符分解字典:
{**dic1, **dic2, **dic3}
要加入字典,只需使用以下代码:
dict1 = {1: 10, 2: 20}
dict2 = {3: 30, 4: 40}
dict3 = {5: 50, 6: 60}
dict_new = {**dic1, **dic2, **dic3}
print(dict_new)
结果:
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}
您可以使用
concatDicts
函数接受可变数量的dict作为输入,并返回新的合并dict
>>> dic1 = {1:10, 2:20}
>>> dic2 = {3:30, 4:40}
>>> dic3 = {5:50, 6:60}
>>>
>>> def concatDicts(*dicts):
... return dict((k,v) for dic in dicts for k,v in dic.items())
...
>>>
>>> new_dic = concatDicts(dic1, dic2, dic3)
>>> print(new_dic)
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}
dictNew.update(dictCon)
?并分配函数的结果…或只是{**dic1,**dic2,**dic3}
。您的函数不修改dictNew
,它使一个新变量成为concatDict
的局部变量,名为dictNew
@Denziloe我的错,我完全误解了您的评论@LevZakharov函数名为concatDict
,可以传入yesdictNew
,但是如果函数的目的是concat todictNew
,那么我不认为这是一种糟糕的做法。但是,如果这是唯一的目的,那么为什么不直接使用dictNew.update(…)
!:pGlobal变量总是不好的做法。@LevZakharov不,它们不是:。在操作简单且已知的受控情况下,它们是完全可以接受的。这里没有理由使用全局变量。如果你不能使用它们-不要使用它们。我正在尝试同时练习函数和字典。这个更改def concatDict(dictCon):dictNew.update(dictCon)实现了我的期望。