Python嵌套字典理解

时间:2017-03-31 10:03:17

标签: python dictionary nested list-comprehension

我有一本字典:

my_dict = {'a': [1, 2, 3], 'c': 3, 'b': 2}

我想要像add_dict = (x x +1 for x my_dict)这样的理解 在编写理解来处理具有多个值的键时,最好的方法是什么?

因此输出看起来像{'a': [2, 3, 4], 'c': 4, 'b':3}或者我可能只希望+1对每个键12的值'b''c' ...将被跳过。

我尝试了这个(前两行有点多余/正在搞乱)

my_dict = {'a': [1, 2, 3], 'b': 2, 'c': 3}
    D = {x: y for (x, y) in zip(my_dict.keys(), my_dict.values())}
    test = (v for v in D.values())

    for x in test:
        try:
            if len(x):
               for i in x:
                   print i +1
        except:
            print x +1

如果名称 ==' 主要':     主要() 输出是

2 3 4 类型对象' int'没有len() 类型对象' int'没有len()

我试图找到一种更优雅的方式来做这个使用理解的方法。

1 个答案:

答案 0 :(得分:0)

这是一个单线程(在Python 3中),假设字典值永远不会成为双嵌套:

>>> {k:([x+1 for x in v] if not isinstance(v,int) else v+1) for k,v in my_dict.items()}
{'a': [2, 3, 4], 'b': 3, 'c': 4}

my_dict.items()替换为{2}用于Python 2