有人可以向我解释一下吗?这对我没有任何意义.
我将字典复制到另一个字典中并编辑第二个字典,然后更改两个字典 为什么会这样?
>>> 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) 如果我有一个字符串数组,我可以检查一个字符串是否在数组中而不进行for循环?具体来说,我正在寻找一种方法在一个if语句中这样做,所以像这样:
if [check that item is in array]:
Run Code Online (Sandbox Code Playgroud) 我有一个持有字典的班级
class OrderBook:
orders = {'Restaurant1': None,
'Restaurant2': None,
'Restaurant3': None,
'Restaurant4': None}
@staticmethod
def addOrder(restaurant_name, orders):
OrderBook.orders[restaurant_name] = orders
Run Code Online (Sandbox Code Playgroud)
我正在运行调用该方法的4个线程(每个餐厅一个)OrderBook.addOrder.这是每个线程运行的函数:
def addOrders(restaurant_name):
#creates orders
...
OrderBook.addOrder(restaurant_name, orders)
Run Code Online (Sandbox Code Playgroud)
这是安全的,还是我必须在打电话前使用锁addOrder?
我想知道在以下背景下,深度复制是如何工作的:
from copy import deepcopy
def copyExample:
self.myDict = {}
firstPosition = "First"
firstPositionContent = ["first", "primero"]
secondPosition = "Second"
secondPositionContent = ["second"]
self.myDict[firstPosition] = firstPositionContent
self.myDict[secondPosition] = secondPositionContent
return deepcopy(self.myDict)
def addExample(self):
copy = self.copyExample()
copy["Second"].add("segundo")
Run Code Online (Sandbox Code Playgroud)
它是否返回对字典中列表的引用?或者它是否按预期工作并复制具有不同引用的新列表中的每个列表?
我知道什么是深层复制(所以没有必要解释深层和浅层之间的区别),但我想知道它是否像我期望的那样工作,因此在我使用时不会更改实例变量addExample().
使用词典时如何避免以下情况
a={'b':1}
c=a
c.update({'b':2})
print a # {'b':2}
print c # {'b':2}
Run Code Online (Sandbox Code Playgroud) 为什么使用该dict()函数不会像标准键:值对字典那样创建带有嵌套字典的副本?
字典
A = {'key' : 'value'}
B = dict(A)
A['key'] = 10
print A, B
Run Code Online (Sandbox Code Playgroud)
输出:
{'key': 10} {'key': 'value'}
Run Code Online (Sandbox Code Playgroud)
嵌套字典:
A = {'key' : {'subkey' : 'value'}}
B = dict(A)
A['key']['subkey'] = 10
print A, B
Run Code Online (Sandbox Code Playgroud)
输出:
{'key': {'subkey': 10}} {'key': {'subkey': 10}}
Run Code Online (Sandbox Code Playgroud) python ×6
dictionary ×4
arrays ×1
contains ×1
deep-copy ×1
python-2.7 ×1
python-3.x ×1
reference ×1