【问题标题】:add more values to a key python向键 python 添加更多值
【发布时间】:2020-11-05 19:52:14
【问题描述】:

我想补充一下:

{
   "Category": "Fruit"
}

到这里:

{
   "Category": "Vegetable"
{

所以我可以拥有:

"Name": "Menu1",
"Categories":[
    {
       "Category": "Fruit"
    {
    }
       "Category": "Vegetable"
    {
   ]

我正在创建一个字典列表,有时我可以有 2 个具有相同键 ["Name"] 的字典,我想避免将两个具有相同名称的字典分开。目前我这样做是为了检查“名称”是否已经存在,如果不存在,则创建它并将其添加到列表中:

if len(List) != 0: #checking if the list has something
   for x in List:
       if menu['Name'] == x['Name']:
          menu['Category'].append(Category) #if exist add data to the existing one
          break
       else:    
          List.append(menu) #if doesn't exist add it
          break
else:
   List.append(menu) #if is empty add an item

  

【问题讨论】:

  • 在 Python 中空列表是错误的,你 if List: 相当于 if len(List) != 0:
  • ['Category'] 应该是menu['Category']
  • 如果你在ifelse中都break,你只处理List的第一个元素,所以没有理由循环。
  • 也许第一个 else: 应该不缩进,所以它在 for 循环上,而不是 if
  • 给出输入和期望输出的例子

标签: python arrays json dictionary


【解决方案1】:

您应该附加到x['Category'],而不是包含字符串'Category' 的未命名列表。

添加名称的else: 块应位于for 循环中。如果循环正常结束而不是从break 结束,这将执行,这意味着找不到名称。

无需先检查List 的长度。如果为空,则循环正常结束并执行else:块。

for x in List:
    if menu['Name'] == x['Name']:
        x['Category'].append(Category) #if exist add data to the existing one
        break
else:    
    List.append(menu) #if doesn't exist add it

【讨论】:

  • 感谢您的回答!它帮助我解决了很多问题,但我不得不稍微改变一下
【解决方案2】:

所以我做的是这样的:

for item in my_list:
    if item['Name'] == menu['Name']: #Exist in list
        print('Exist')
        var = []
        var.append({'Category': Category})
        x['Categories'] += var
        cod = []
        cod.append({'Code': code})
        x['Codes'] += cod
        break
else:
    my_list.append(menu) #doesn't exist
    print('not matched')

【讨论】:

  • 如何将另一个类别添加到类别列表中?
  • 这与x['Categories'].append({'Category': Category}) 相同。无需创建另一个列表。
  • 在我的回答中,我假设 Category 是像 {'Category': "Fruit"} 这样的字典,而不是字符串。
  • 它对我不起作用:(当我使用 .append(something) 时,something 覆盖了以前的值
猜你喜欢
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2020-06-10
  • 2017-10-11
  • 2023-03-11
  • 2020-08-07
相关资源
最近更新 更多