使用for循环中的f字符串添加到字典

时间:2019-11-25 23:26:13

标签: python python-3.x loops dictionary f-string

我目前正在尝试做类似以下的事情:

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}

我该如何生产前者?

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您可以尝试做类似的事情

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

您需要在for循环之外初始化字典。在您的代码中,每次迭代都在创建一个新的字典。

答案 2 :(得分:1)

您要在每个循环中创建一个新对象。

numbers = {}

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

答案 3 :(得分:0)

如果需要,可以使用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}

有点难读,但还不错。