Python 修改词典的副本而不改变原件
我试图在一个循环中修改字典的副本,并且只修改副本,但它仍然修改原始版本 我在没有循环的情况下工作时不会遇到这个问题 这是我的原始字典:Python 修改词典的副本而不改变原件,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我试图在一个循环中修改字典的副本,并且只修改副本,但它仍然修改原始版本 我在没有循环的情况下工作时不会遇到这个问题 这是我的原始字典: database['asteroids] = {'20 6': {'capacity': 12, 'pos': [20, 6], 'farm_rate': 2}, '5 21': {'capacity': 12, 'pos': [5, 21], 'farm_rate': 2}, '10 14': {'capacity': 12, 'pos': [10, 14],
database['asteroids] = {'20 6': {'capacity': 12, 'pos': [20, 6], 'farm_rate': 2}, '5 21': {'capacity': 12, 'pos': [5, 21], 'farm_rate': 2}, '10 14': {'capacity': 12, 'pos': [10, 14], 'farm_rate': 1}}
还有我正在使用的另一种措辞:
{'shipOne': {'area': [[20, 3], [21, 3], [19, 3], [20, 4], [20, 2]],'attack': 0,'cost': 2,'life': 3,'portée': 0,'position': [20, 3],'remaining_tonnage': 4,'status': 'unlock','taille': 5,'tonnage': 4,'type': 'excavator-M'},'shipTwo': {'area': [[20, 3], [21, 3], [19, 3], [20, 4], [20, 2]],'attack': 0,'cost': 2,'life': 3,'portée': 0,'position': [20, 3],'remaining_tonnage': 4,'status': 'unlock','taille': 5,'tonnage': 4,'type': 'excavator-M'}}
最后,我要做的是:
ships_dest = dict()
samp_asteroids = dict(database['asteroids'])
for ship in database['player1']['ships']:
ships_dest.update({ship:''})
taxicab = dict()
for asteroid in samp_asteroids:
if ships_dest[ship] == '':
if database['asteroids'][asteroid]['capacity'] != 0:
ships_dest.update({ship:database['asteroids'][asteroid]['pos']})
samp_asteroids[asteroid]['capacity'] -= database['player1']['ships'][ship]['tonnage']
执行后,我得到以下输出:
ships_dest = {'shipTwo': [5, 21], 'shipOne': [5, 21]}
database['asteroids'] = {'5 21': {'pos': [5, 21], 'capacity': 4, 'farm_rate': 2}, '20 6': {'pos': [20, 6], 'capacity': 12, 'farm_rate': 2}, '10 14': {'pos': [10, 14], 'capacity': 12, 'farm_rate': 1}}
samp_asteroids = {'5 21': {'pos': [5, 21], 'capacity': 4, 'farm_rate': 2}, '20 6': {'pos': [20, 6], 'capacity': 12, 'farm_rate': 2}, '10 14': {'pos': [10, 14], 'capacity': 12, 'farm_rate': 1}}
数据库['asteroids]['5 10']['capacity]
的值仍应为12。(或者无论如何,这就是我所希望的……)
如果有任何帮助,我将不胜感激
谢谢试着做一份深度复制:非常感谢!可能重复的