如何传递多个字典并访问某些值?

时间:2019-04-07 10:00:34

标签: python python-3.x

我正在尝试在Python中执行以下操作:

#include <stdio.h>
#include <stdlib.h> 

#define cats 3
#define loops 30

int main() {
    int (*a)[loops] = malloc(sizeof(*a) * loops);

    if (a != NULL) {
        for (i = 0; i < cats; i++) {
            for (j = 0; j < loops; j++)
                a[i][j] = i + j;
        }
        for (i = 0; i < cats; i++) {
            for (j = 0; j < loops; j++)
                printf("%d ", a[i][j]);
            printf("\n");
        }
        free(a);
    }
    return 0;
}

但是,Python不允许我将多个dict1 = { 'a': 2, 'b': 3, 'c': 5, } dict2 = { 'd': 2, 'e': 3, } def do_sum(**dict1, **dict2): print(dict1['a'] + dict1['b'] + dict2['d']) do_sum(**dict1, **dict2) 传递给一个函数。我也尝试这样做,但是出现错误:

**kwargs

如何实现功能中的操作?基本上,我想传递多个字典,但只希望访问其中的某些值。

1 个答案:

答案 0 :(得分:1)

您可以像这样通过字典本身:

dict1 = {
    'a': 2,
    'b': 3,
    'c': 5,
}

dict2 = {
    'd': 2,
    'e': 3,
}

def do_sum(dict1, dict2):
    print(dict1['a'] + dict1['b'] + dict2['d'])

do_sum(dict1, dict2)

这实际上与您要执行的操作完全相同,**仅对字典进行解构,然后函数再次对其进行重建。因此,这也更快。 如果您真的想做自己的风格,可以使用dict.update()合并两个字典。像这样:

import copy

dict1 = {
    'a': 2,
    'b': 3,
    'c': 5,
}

dict2 = {
    'd': 2,
    'e': 3,
}


def do_sum(**dict3):
    print(dict3['a'] + dict3['b'] + dict3['d'])


dict3 = copy.copy(dict1)
dict3.update(dict2)

do_sum(**dict3)

编辑: 正如jonrsharpe指出的那样,您无需构建dict3。代码如下:


dict1 = {
    'a': 2,
    'b': 3,
    'c': 5,
}

dict2 = {
    'd': 2,
    'e': 3,
}


def do_sum(**dict3):
    print(dict3['a'] + dict3['b'] + dict3['d'])


do_sum(**dict1, **dict2)