本文介绍了Python3,构建嵌套字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Python的新手,来自Perl,在这里我经常使用这样的东西:

I'm new with Python, coming from Perl where I've used something like this very often:

#!/usr/bin/env perl

my %d;
my $a = 12; $b = 14; $c = 16;

$d{$a}{$b}{$c} = 42;

print($d{$a}{$b}{$c});  # 42

如何在python中填充字典,例如循环

How can fill a dictionary in python e.g. in a loop

如果我使用Python尝试此操作,则会遇到KeyError

If I try this with Python, I've got a KeyError

a = 12
b = 14
c = 16

my_dict[a][b][c] = 42  # KeyError

这是唯一的方法吗?

if a in my_dict:
    if b in my_dict[a]:
        my_dict[a][b][c] = 42
    else:
        my_dict[a][b] = {}
        my_dict[a][b][c] = 42
else:
    my_dict[a] = {}
    my_dict[a][b] = {}
    my_dict[a][b][c] = 42

推荐答案

您可以使用 dict.setdefault(key,default_value)

You may use dict.setdefault(key, default_value)

my_dict = {}
my_dict.setdefault(a, {}).setdefault(b, {}).setdefault(c, 42)
print(my_dict)  # {12: {14: {16: 42}}}

my_dict = {a: {}}
my_dict.setdefault(a, {}).setdefault(b, {}).setdefault(c, 42)
print(my_dict)  # {12: {14: {16: 42}}}

my_dict = {a: {b: {}}}
my_dict.setdefault(a, {}).setdefault(b, {}).setdefault(c, 42)
print(my_dict)  # {12: {14: {16: 42}}}

这篇关于Python3,构建嵌套字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 06:16
查看更多