Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 修改词典的副本而不改变原件_Python_Python 3.x_Dictionary - Fatal编程技术网

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。(或者无论如何,这就是我所希望的……)

如果有任何帮助,我将不胜感激


谢谢

试着做一份深度复制:非常感谢!可能重复的