为了账号安全,请及时绑定邮箱和手机立即绑定

将多个列表或项目添加到字典键

将多个列表或项目添加到字典键

qq_笑_17 2021-08-17 15:56:57
我不知道如何表达标题,但基本上我有以下几点:{  "restaurantName": "Restaurant 1",  "restaurantLink": "Link 1",  "restaurantType": "Type 1",  "restaurantAddress": "Address 1",  "dateRetrieved": "14-11-2018",  "review": {    "reviewer": "Reviewer 1",    "reviewDetail": "Review Detail 1"  }}我正在尝试向review评论键添加新内容,因此最终输出将如下所示,具体取决于餐厅有多少评论:{  "restaurantName": "Restaurant 1",  "restaurantLink": "Link 1",  "restaurantType": "Type 1",  "restaurantAddress": "Address 1",  "dateRetrieved": "14-11-2018",  "review": [    {      "reviewer": "Reviewer 1",      "reviewDetail": "Review Detail 1"    },    {      "reviewer": "Reviewer 2",      "reviewDetail": "Review Detail 2"    },{      "reviewer": "Reviewer 3",      "reviewDetail": "Review Detail 3"    },    ...    ...  ]}我目前的代码是:for review in reviews:  HungrygowhereItem['review'] = {      [        'reviewer': reviewer,        'reviewDetail': reviewDetail      ]  }HungrygowhereItem现有字典在哪里它只会存储Reviewer 1和Review Detail 1。我如何将新列表附加到字典中?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

如果我理解正确,您希望将值附加到现有字典中的数组,例如以下字典:


_dict = {

      "restaurantName": "Restaurant 1",

      "restaurantLink": "Link 1",

      "restaurantType": "Type 1",

      "restaurantAddress": "Address 1",

      "dateRetrieved": "14-11-2018",

      "review": [

        {

          "reviewer": "Reviewer 1",

          "reviewDetail": "Review Detail 1"

        },

        {

          "reviewer": "Reviewer 2",

          "reviewDetail": "Review Detail 2"

        },{

          "reviewer": "Reviewer 3",

          "reviewDetail": "Review Detail 3"

        }

      ]

    }

将价值附加到审查中:


_dict['review'].append( {

          "reviewer": "Reviewer 4",

          "reviewDetail": "Review Detail 4"

        })

在您的情况下,如果 HungrygowhereItem 是字典:


for review in reviews:

  if 'review' in HungrygowhereItem:

      HungrygowhereItem['review'].append({

           'reviewer': reviewer,

           'reviewDetail': reviewDetail

       })

   else:

      HungrygowhereItem['review'] = [{

           'reviewer': reviewer,

           'reviewDetail': reviewDetail

       }]


查看完整回答
反对 回复 2021-08-17
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

首先,将键的值设为'review'列表。


>>> restaurant = {

...:  "restaurantName": "Restaurant 1",

...:  "restaurantLink": "Link 1",

...:  "restaurantType": "Type 1",

...:  "restaurantAddress": "Address 1",

...:  "dateRetrieved": "14-11-2018",

...:  "review": {

...:    "reviewer": "Reviewer 1",

...:    "reviewDetail": "Review Detail 1"

...:  }

...:}

>>> 

>>> restaurant['review'] = [restaurant['review']]

>>> restaurant['review']

>>> [{'reviewDetail': 'Review Detail 1', 'reviewer': 'Reviewer 1'}]

现在您可以附加到该列表。


>>> reviews = [{"reviewer": "Reviewer 2",

...:            "reviewDetail": "Review Detail 2"},

...:           {"reviewer": "Reviewer 3",

...:           "reviewDetail": "Review Detail 3"}]

...:           

>>> for review in reviews:

...:    restaurant['review'].append(review)

...:    

>>> restaurant['review']

>>> 

[{'reviewDetail': 'Review Detail 1', 'reviewer': 'Reviewer 1'},

 {'reviewDetail': 'Review Detail 2', 'reviewer': 'Reviewer 2'},

 {'reviewDetail': 'Review Detail 3', 'reviewer': 'Reviewer 3'}]

如果您可以修复上游代码,您也可以restaurant在defaultdict没有'review'密钥的情况下创建一个。


>>> from collections import defaultdict

>>> restaurant = {

...:  "restaurantName": "Restaurant 1",

...:  "restaurantLink": "Link 1",

...:  "restaurantType": "Type 1",

...:  "restaurantAddress": "Address 1",

...:  "dateRetrieved": "14-11-2018"

...:}

>>> 

>>> restaurant = defaultdict(list, restaurant)

>>> reviews = [{"reviewer": "Reviewer 1",

...:            "reviewDetail": "Review Detail1"},

...:           {"reviewer": "Reviewer 2",

...:            "reviewDetail": "Review Detail 2"},

...:           {"reviewer": "Reviewer 3",

...:           "reviewDetail": "Review Detail 3"}]

...:      

>>> restaurant['reviews'].extend(reviews)

>>> restaurant['reviews']

>>> 

[{'reviewDetail': 'Review Detail1', 'reviewer': 'Reviewer 1'},

 {'reviewDetail': 'Review Detail 2', 'reviewer': 'Reviewer 2'},

 {'reviewDetail': 'Review Detail 3', 'reviewer': 'Reviewer 3'}]

作为替代restaurant是一个defaultdict,你可以只设置键值'reviews'添加任何评论之前,空单。


查看完整回答
反对 回复 2021-08-17
?
桃花长相依

TA贡献1860条经验 获得超8个赞

你必须从一些不同的review结构开始:


restaurant = {

  ...,

  "review": []

}

请注意,这review是此处的列表。


因此,向该列表添加评论只是一个基本的列表操作:


restaurant['review'].append({

    "reviewer": "Reviewer 1",

    "reviewDetail": "Review Detail 1"

})


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号