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

如何正确地向字典中添加额外的层(或更好的选择)

如何正确地向字典中添加额外的层(或更好的选择)

天涯尽头无女友 2022-01-18 17:16:53
在我的程序中,我要求用户做出选择。这些选择然后从字典中的键/嵌套键/值位置提取数据,然后进行计算。我目前在我的一个文件中创建了很多字典,但理想情况下希望将其缩小为一个(或至少更少)字典,因为我相信这将允许编写其余代码更顺利地继续前进。我想知道如何正确地将图层添加到字典中,或者.. 有没有比字典更好的选择?我目前有很多这样的:nameofdict = { 'KEY': 'NESTED KEY': 'VALUE', 'NESTED KEY': 'VALUE'},               'KEY': 'NESTED KEY': 'VALUE', 'NESTED KEY': 'VALUE'}}但想要更多类似的东西:nameofdict = { 'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE', 'DOUBLE                 NESTED KEY': 'VALUE'}},               'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE', 'DOUBLE                 NESTED KEY': 'VALUE'}}}如果某个“项目”没有该参数,则最终能够跳过某些级别,例如:nameofdict = { 'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE', 'DOUBLE                 NESTED KEY': 'VALUE'}},               'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE', 'DOUBLE                 NESTED KEY': 'VALUE'}},                                            {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE', 'DOUBLE                 NESTED KEY': 'VALUE'}}}我已经在数据输入上投入了时间,并制作了一个程序来使嵌套字典的创建更容易、更快,所以我正在尝试使用我已经花时间在的东西。我刚刚开始熟悉 Python 的所有功能当我学习这门语言时,提供并慢慢地使我的代码更简单、更统一。
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

你只需要先声明结构,然后你就可以使用它


my_list = list()

my_dict = dict()

my_list.append(my_dict)

my_list[0]['KEY'] = dict()

my_list[0]['KEY']['NESTED KEY'] = dict()

my_list[0]['KEY']['NESTED KEY']['DOUBLE NESTED KEY'] = 'VALUE'


print(my_list)

输出:


[{'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE'}}}]

之后,如果您需要向数组添加更多对象,您可以这样做。


my_list = list()

my_dict1 = dict()

my_dict2 = dict()

my_list.append(my_dict1)

my_list.append(my_dict2)

my_list[0]['KEY'] = dict()

my_list[0]['KEY']['NESTED KEY'] = dict()

my_list[0]['KEY']['NESTED KEY']['DOUBLE NESTED KEY'] = 'VALUE1'

my_list[1]['KEY'] = dict()

my_list[1]['KEY']['NESTED KEY'] = dict()

my_list[1]['KEY']['NESTED KEY']['DOUBLE NESTED KEY'] = 'VALUE2'


print(my_list)

输出


[

  {'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE1'}}},

  {'KEY': {'NESTED KEY': {'DOUBLE NESTED KEY': 'VALUE2'}}}

]


查看完整回答
反对 回复 2022-01-18
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您也可以创造性地使用defaultdict. 这很短,将根据需要创建字典。


from collections import defaultdict


nested_dict = lambda: defaultdict(nested_dict)

nest = nested_dict()

nest[0]['KEY']['NESTED KEY']['DOUBLE NESTED KEY'] = 'VALUE'

nest[1]['KEY']['NESTED KEY']['DOUBLE NESTED KEY'] = 'VALUE'

然后,如果您通过以下方式打印它:


import json

print(json.dumps(nest, indent=4))

输出:


{

    "0": {

        "KEY": {

            "NESTED KEY": {

                "DOUBLE NESTED KEY": "VALUE"

            }

        }

    },

    "1": {

        "KEY": {

            "NESTED KEY": {

                "DOUBLE NESTED KEY": "VALUE"

            }

        }

    }

}

免责声明:defaultdict如果找不到,A将创建一个条目。在某些情况下,这可能对您不利。例如,如果我这样做:


bad_nest = nested_dict()

print(bad_nest[2]) # This will output {}, but will also add {2: {}} to the dict


查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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