相关疑难解决方法(0)

如何复制字典并仅编辑副本

有人可以向我解释一下吗?这对我没有任何意义.

我将字典复制到另一个字典中并编辑第二个字典,然后更改两个字典 为什么会这样?

>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2
{'key2': 'value2', 'key1': 'value1'}
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}
Run Code Online (Sandbox Code Playgroud)

python dictionary reference python-3.x

737
推荐指数
15
解决办法
52万
查看次数

全局词典不需要关键字全局来修改它们吗?

可能重复:
为什么在这种情况下不需要全局关键字?

我想知道为什么我可以在没有global关键字的情 为什么它对其他类型是强制性的?这背后有什么逻辑吗?

例如代码:

#!/usr/bin/env python3

stringvar = "mod"
dictvar = {'key1': 1,
           'key2': 2}

def foo():
    dictvar['key1'] += 1

def bar():
    stringvar = "bar"
    print(stringvar)

print(dictvar)
foo()
print(dictvar)

print(stringvar)
bar()
print(stringvar)
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

me@pc:~/$ ./globalDict.py 
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 2}  # Dictionary value has been changed
mod
bar
mod
Run Code Online (Sandbox Code Playgroud)

我期待的地方:

me@pc:~/$ ./globalDict.py 
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 1}  # I didn't use global, so dictionary remains the same
mod
bar
mod
Run Code Online (Sandbox Code Playgroud)

python dictionary scope global global-variables

32
推荐指数
2
解决办法
5万
查看次数

Python:用于更改"就地"值的函数?

我想实现一个函数,允许其参数的值"就地"重新分配.

例如,一个函数将增加参数x并减少参数y.(这只是一个简单的例子 - 动机是XY实际上是大型数据帧的单个元素;它们的表达式很笨拙;而且这个操作将经历多次迭代.)

def incdec(x,y,d):
    x += d
    y -= d
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将运行为:

X = 5; Y = 7; d = 2
incdec(X,Y,d)
Run Code Online (Sandbox Code Playgroud)

发现这些值现在是X = 7和Y = 5.但当然它不会那样 - 我想知道为什么?

python function

7
推荐指数
1
解决办法
6581
查看次数

Python:异常行为字典更新方法

我正在编写一个构建字典的脚本,我观察到一种奇怪的行为.

我将在下面用一个小例子来描述它.

def test_f(parameter):
    parameter.update({'watermelon':'22'})
    return parameter

fruits = {'apple':20, 'orange': 35, 'guava': 12}
new_fruits = test_f(fruits)
Run Code Online (Sandbox Code Playgroud)

简而言之,我有一个字典,我传递给一个函数,test_f.该函数将新字典附加到输入并返回它.我在一个名为的变量中捕获函数的输出new_fruits.然而,这也改变了原始变量fruits.

为什么原始变量会fruits发生变化?我update是以错误的方式使用该方法吗?

python dictionary function

0
推荐指数
1
解决办法
76
查看次数