如何在python中更新嵌套dict的值?

时间:2017-06-26 12:51:16

标签: python-2.7 dictionary

我是编程和学习python的新手。我在python中尝试字典时遇到困难。 我有一个带键的普通字典,值为空字符串:

dict = {'Project_path':''},
        'Target_files':'',
        'default_ws':''} 

我正在更新键的值,如下所示:

dict['project_path'] = 'Pass'

但我想创建一个dict,我不必使用长按键;相反,我可以将这些键映射到数字,这样如果我想更新一个字典,我可以这样做:

dict = {1:{'Project_path':''},
        2:{'Target_files':''},
        3:{'default_ws':''}} 
dict['1'] = 'pass' 

它应该将'project_path'的值更新为'pass'

更新值后,我必须将其写入文件

有办法吗?

1 个答案:

答案 0 :(得分:0)

欢迎使用Python编程!这里几件事情:首先,使用dict作为变量名称并不是一个好主意,因为这是整个字典对象类的关键字。你可以使用类似my_dict之类的东西。

其次,当您输入密钥编号然后调用dict['1'] = 'pass'时,如果您已将整数1声明为密钥,则会在密钥中查找字符串“1”。让我解释一下:

'1'是一个字符串

1是整数。

在python中,这是两个非常不同的东西,不能混在一起。这就是价值不会更新的原因。如果您要说dict[1] = 'pass',那应该对您有用,它应该更新值。请注意,虽然这将覆盖作为当前值的整个字典并将其替换为“pass”,如果您只想更改字典键,请使用

dict[1]['Project_path'] = 'pass'

然而,这对我来说似乎是多余的。有点不清楚你为什么要在那里映射整数(可能是为了循环并更改值),但是如果你只想要与它相关的整数,你可以创建和这样的字典数组:

my_array = [{"Project_path": ''}, {"Target_files":''}, {default_ws":''}]

然后,您可以通过从0开始的索引来访问它们。my_array[0]{"Project_path":''}。同样,有点不清楚你为什么要将整数映射到这些序列,所以它对我来说没有意义,因为这有点多余。

最后,写入文件。那里有很多网页,因为在阅读和编写文件时有很多选择(例如this one),但这里是短版本。

with open('your_filepath.txt', 'w') as file: #note this will overwrite the current file, see the page I linked.
    file.write(my_array[0]) #or whatever you want to write to it.

就这么简单,但就像我说的那样,看看那个页面,看看你的选择是什么,并为你选择最好的选择。希望这很有用,可以帮助你入门。