簡體   English   中英

在 for 循環中使用 f 字符串添加到字典

[英]Add to dictionary with an f-string inside a for loop

我目前正在嘗試做一些非常類似於:

for letter in ['a', 'b', 'c']: 
    key1 = f'{letter}_1' 
    key2 = f'{letter}_2' 
    numbers = { 
        key1: 1, 
        key2: 2 
    }

我希望numbers是: {'a_1': 1, 'a_2': 2, 'b_1': 1, 'b_2': 2, 'c_1': 1, 'c_2': 2} 相反,我得到: {'c_1': 1, 'c_2': 2}

我怎樣才能生產前者?

我認為問題在於您沒有在for循環之前初始化 dict。

numbers = {}


for letter in ['a', 'b', 'c']:
    key1 = f'{letter}_1'
    key2 = f'{letter}_2'
    numbers.update ({
        key1: 1,
        key2: 2
    })

print(numbers)

你可以嘗試做這樣的事情

numbers = {}
for letter in ['a', 'b', 'c']:
    key1 = f'{letter}_1' 
    key2 = f'{letter}_2' 
    numbers.update({ 
        key1: 1, 
        key2: 2 
    })

您需要在 for 循環之外初始化您的字典。 在您的代碼中,您每次迭代都會創建一個新字典。

您在每個循環中都創建一個新對象。

numbers = {}

for letter in ['a', 'b', 'c']: 
    key1 = f'{letter}_1' 
    key2 = f'{letter}_2' 
    numbers.update({ 
        key1: 1, 
        key2: 2 
    })

如果需要,您可以使用 dict 理解來構建它:

mydict = {f'{x}_{str(y)}':y for x in ['a','b','c'] for y in (1,2)}

這使:

{'a_1': 1, 'a_2': 2, 'b_1': 1, 'b_2': 2, 'c_1': 1, 'c_2': 2}

讀起來有點困難,但還不錯。

暫無
暫無

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

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