猿问

在字典中嵌套列表

我想知道Dictionaries和Lists中嵌套的限制。下面的代码工作正常。


dict = {

        'apples': {'typ1':'2.99','typ2':'2.49'},

        'oranges': '1.99',

        'berries':['blue', 'green', 'red']

       }

但是,如果我尝试在列表中的键下创建一个字典,'berries'如下所示:


dict={

        'apples': {'typ1':'2.99','typ2':'2.49'}, 

        'oranges':'1.99', 

        'berries': [ blue = {'typ1':'3.99','typ2'='3.49'}, 'green', 'red']

     }

这不起作用。有人可以解释一下吗?


开心每一天1111
浏览 140回答 3
3回答

慕森王

首先,不要调用你的字典dict。这会掩盖 Python 中的实际类dict,使您无法再引用该类。现在,'berries': [ blue = {'typ1':'3.99','typ2'='3.49'}, 'green', 'red']是因为语法无效而使一切变得混乱的部分。使用{...}has键和值定义的字典。使用定义的列表[...] 不能有键。列表只有元素。因此,您可以定义一个列表['blue', 'green', 'red'],并将该列表分配给键,'berries'如下所示:mydict = { ...          , 'berries': ['blue', 'green', 'red']          }您甚至可以混合列表中元素的类型,因此这也是有效的:[{'color': 'blue', 'typ1': 3.99, 'typ2': 3.49}, 'green', 'red']或者您可以定义一个字典,{'blue': {...}, 'green': {...}, 'red': {...}}并将该字典分配给键,'berries'如下所示:mydict = { ...          , 'berries': {'blue': {...}, 'green': {...}, 'red': {...}}          }但是您无法像最初尝试那样在列表中分配键值对。此外,=无论如何,符号对于键值对来说都是错误的。

SMILET

[blue={'typ1':'3.99','typ2'='3.49'},'green', ...]这毫无意义。您正在尝试使用运算符在数组内分配某些内容=。它不是限制,只是语法错误。另外,将 更改=为 a:也不起作用,因为数组不保存键值对。所以看起来你正在混淆字典和数组。

胡说叔叔

首先,我看到您创建了错误的格式。您必须遵循 json 格式。格式错误,'berries': [blue = {'typ1': '3.99', 'typ2' = '3.49'}, 'green', 'red']因此上述元素将修改如下:'berries': [{'blue': {'typ1': '3.99', 'typ2': '3.49'}}, 'green', 'red']}此外,berry 元素的类型是列表,因此您必须使用“append”函数来添加新元素。所以正确的做法是:dict['berries'].append({'blue': {'typ1': '3.99', 'typ2': '3.49'}})总结代码:dict = {'apples': {'typ1': '2.99', 'typ2': '2.49'}, 'oranges': '1.99', 'berries': ['green', 'red']}dict['berries'].append({'blue': {'typ1': '3.99', 'typ2': '3.49'}})print(dict)预期结果是: {'apples': {'typ1': '2.99', 'typ2': '2.49'}, 'oranges': '1.99', 'berries': ['green', 'red', {'blue': {'typ1': '3.99', 'typ2': '3.49'}}]}
随时随地看视频慕课网APP

相关分类

Python
我要回答