从嵌套 for 循环到字典理解?
From nested for loop to dictionary comprehension?
我有一本字典 (dict_),其中包含整数列表作为值。
我想对这些列表进行操作并将结果保存为新字典。
下面我对这些列表进行操作,如果元素大于5,则加2。我使用嵌套的for循环来实现这一点。我如何使用字典理解来实现同样的目标?
dict_={'a':[5, 8, 7],
'b':[4, 7, 2],
'c':[2, 2, 4]}
print(dict_)
#Output: {'a': [5, 8, 7], 'b': [4, 7, 2], 'c': [2, 2, 4]}
dict_new = {}
for k, v in dict_.items():
list_temp=[]
for e in v:
if e > 5:
ne=e + 2
list_temp.append(ne)
else:
list_temp.append(e)
dict_new[k] = list_temp
print(dict_new)
# Output: {'a': [5, 8, 7], 'b': [4, 7, 2], 'c': [2, 2, 4]}
这可能是你的 dict-comprehension:
{k: [i if i <= 5 else i + 2 for item in v] for k, v in dict_.items()}
请注意,您还需要 list-comprehension 作为值。
注意到 False
基本上是 0
而 True
是 1
你可以简化(但也许让它更模糊?) list-comprehension:
{k: [i + 2 * (i > 5) for i in v] for k, v in dict_.items()}
您可以这样做,但是当您同时使用字典和列表时,您还需要使用列表理解。
my_dict ={'a':[5, 8, 7],
'b':[4, 7, 2],
'c':[2, 2, 4]}
d = {key: [x if x <= 5 else x + 2 for x in value] for key, value in my_dict.items()}
这应该可以解决上述问题 return:
{'a': [5, 10, 9], 'b': [4, 9, 2], 'c': [2, 2, 4]}
for k, v in dict_.items():
dict_new[k] = [e + 2 if e > 5 else e for e in v ]
我有一本字典 (dict_),其中包含整数列表作为值。 我想对这些列表进行操作并将结果保存为新字典。
下面我对这些列表进行操作,如果元素大于5,则加2。我使用嵌套的for循环来实现这一点。我如何使用字典理解来实现同样的目标?
dict_={'a':[5, 8, 7],
'b':[4, 7, 2],
'c':[2, 2, 4]}
print(dict_)
#Output: {'a': [5, 8, 7], 'b': [4, 7, 2], 'c': [2, 2, 4]}
dict_new = {}
for k, v in dict_.items():
list_temp=[]
for e in v:
if e > 5:
ne=e + 2
list_temp.append(ne)
else:
list_temp.append(e)
dict_new[k] = list_temp
print(dict_new)
# Output: {'a': [5, 8, 7], 'b': [4, 7, 2], 'c': [2, 2, 4]}
这可能是你的 dict-comprehension:
{k: [i if i <= 5 else i + 2 for item in v] for k, v in dict_.items()}
请注意,您还需要 list-comprehension 作为值。
注意到 False
基本上是 0
而 True
是 1
你可以简化(但也许让它更模糊?) list-comprehension:
{k: [i + 2 * (i > 5) for i in v] for k, v in dict_.items()}
您可以这样做,但是当您同时使用字典和列表时,您还需要使用列表理解。
my_dict ={'a':[5, 8, 7],
'b':[4, 7, 2],
'c':[2, 2, 4]}
d = {key: [x if x <= 5 else x + 2 for x in value] for key, value in my_dict.items()}
这应该可以解决上述问题 return:
{'a': [5, 10, 9], 'b': [4, 9, 2], 'c': [2, 2, 4]}
for k, v in dict_.items():
dict_new[k] = [e + 2 if e > 5 else e for e in v ]