我有一本字典:
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
对每个键1
和2
的值'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()
我试图找到一种更优雅的方式来做这个使用理解的方法。
答案 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