簡體   English   中英

從嵌套 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]}

這可能是你的理解:

{k: [i if i <= 5 else i + 2 for item in v] for k, v in dict_.items()}

請注意,您還需要對這些值進行列表理解。

注意False基本上是0True1你可以簡化(但也許讓它更模糊?)列表理解:

{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()}

這應該可以解決上述問題並返回:

{'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 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM