List 将列表项更新为嵌套字典的值

List 将列表项更新为嵌套字典的值,list,dictionary,nested,key,List,Dictionary,Nested,Key,我有以下嵌套字典:facebook。您会注意到其中一个键值对是friends:[friend1、friend2等。在尝试将各种朋友附加到列表中时,它会这样做,但格式不正确 问题1:是否有人能提供一个答案/解决方案来解决这个问题。附加所给信息时所需的输出应与字典中John和Mary keys的格式相同 注意:键是:John,Mary和在register_user中,我尝试添加键:Mr x。值如图所示,其中每个键的朋友存储在一个列表中。我不确定的是,当您将键和值添加到字典时,您可以添加值,但如何添加

我有以下嵌套字典:facebook。您会注意到其中一个键值对是friends:[friend1、friend2等。在尝试将各种朋友附加到列表中时,它会这样做,但格式不正确

问题1:是否有人能提供一个答案/解决方案来解决这个问题。附加所给信息时所需的输出应与字典中John和Mary keys的格式相同

注意:键是:John,Mary和在register_user中,我尝试添加键:Mr x。值如图所示,其中每个键的朋友存储在一个列表中。我不确定的是,当您将键和值添加到字典时,您可以添加值,但如何添加键,或在添加值时引用键?

迄今为止的代码:

错误输出: *如前所述,我希望在X先生的新条目中,将Friend1、Friend2等添加到key:friends的列表值中

Enter Name: Mr X
Friend 1: Friend1
Friend 2: Friend2
Friend 3: Friend3
Friend 4: Friend4
('John', {'Friends': ['Bobby', 'Charlie', 'Dalia', 'Ellie'], 'Gender': 'Male', 'Hobby': 'Chess'})
('Mary', {'Friends': ['Bobby', 'Xavier', 'Dalia', 'Zanpoodle'], 'Gender': 'Female', 'Hobbies': 'Chequers'})
('Mr X', ['Friend1', 'Friend2', 'Friend3', 'Friend4'])

dict_items([('John', {'Friends': ['Bobby', 'Charlie', 'Dalia', 'Ellie'], 'Gender': 'Male', 'Hobby': 'Chess'}), ('Mary', {'Friends': ['Bobby', 'Xavier', 'Dalia', 'Zanpoodle'], 'Gender': 'Female', 'Hobbies': 'Chequers'}), **('Mr X', ['Friend1', 'Friend2', 'Friend3', 'Friend4'])])**
更新: 我也试过: 更新{name:{Friends:[friends1,friends2,friends3,friends4]}

但它出现了以下错误:

不幸的是,这仍然是一个错误:

导致语法错误

除了尝试使用append外:

错误:

这一尝试很接近,但并不完全:

产生以下输出:

Enter Name: t
Friend 1: 1
Friend 2: 2
Friend 3: 3
Friend 4: 4
{'John': {'Friends': ['Bobby', 'Charlie', 'Dalia', 'Ellie'], 'Gender': 'Male', 'Hobby': 'Chess'}, 'Mary': {'Friends': ['Bobby', 'Xavier', 'Dalia', 'Zanpoodle'], 'Gender': 'Female', 'Hobbies': 'Chequers'}, 'Name': 't', 'Friends': ['1', '2', '3', '4']}

澄清:我意识到可能有几种不同的方法来解决这个问题。我想简单地解决这个问题,而不引入任何新的东西,如lambda或导入任何东西。解决问题的一种方法是将facebook字典转换为defaultdict

要更新好友列表,只需执行以下操作:

dd_facebook[name]['Friends'].extend([friend1,friend2,friend3,friend4])

这不起作用。在使用输入:X先生,friend1,friend2,friend3,friend4时,结果是:KeyError:“X先生”。我想我的问题可以通过向上投票来解决……这将对人们非常有帮助,我检查了重复项。谢谢,但我只想要一个解决问题的答案,而不引入lambda和导入的需要出于教学目的,这应该是相对简单的-我所需要做的就是在字典中添加一个包含多个键的条目!我希望有人可以help@MissComputing你在寻找最具蟒蛇风格的方式。这个答案很像蟒蛇。如果你想要其他东西,你的问题应该更精确。这肯定是另一个方法,虽然尚未验证,但我希望对上述代码进行一个简单的修复-我认为这是一个语法错误,而不是任何其他错误?感谢不必要的否决票,当您的答案最初是错误的时候,我没有否决您,欢迎您现在进行表决:最后,我澄清了我的问题,以便不包括引入任何内容除了代码中已经存在的内容之外,其他ng
facebook[name]={'Friends':[friend1,friend2,friend3,friend4]}
Traceback (most recent call last):
  File "python", line 35, in <module>
  File "python", line 11, in main
  File "python", line 27, in register_user
TypeError: 'type' object does not support item assignment
   newfriends=[friend1,friend2,friend3,friend4]
   facebook.update({name:{[newfriends]})
friendslist=[friend1,friend2,friend3,friend4]
  facebook['name'].append(friendlist)
KeyError: 'name'
facebook.update({"Name":name,"Friends":[friend1,friend2,friend3,friend4]})
Enter Name: t
Friend 1: 1
Friend 2: 2
Friend 3: 3
Friend 4: 4
{'John': {'Friends': ['Bobby', 'Charlie', 'Dalia', 'Ellie'], 'Gender': 'Male', 'Hobby': 'Chess'}, 'Mary': {'Friends': ['Bobby', 'Xavier', 'Dalia', 'Zanpoodle'], 'Gender': 'Female', 'Hobbies': 'Chequers'}, 'Name': 't', 'Friends': ['1', '2', '3', '4']}
from collections import defaultdict

dd_facebook = defaultdict(lambda: {"Friends": []}, facebook) 
dd_facebook[name]['Friends'].extend([friend1,friend2,friend3,friend4])