Python-根据循环中的项目名称在循环外更改变量

时间:2019-01-31 03:08:05

标签: python

我确信这很简单,我认为我没有提出正确查询的语言。我想使用我在for循环中输入的列表项来更新for循环外的变量。

import random

itemlist = ['cat', 'dog']

catcount = 0
dogcount = 0

for item in itemlist:
    ((item))count = random.randint(1,101)

使用itemcount不起作用,它只是给itemcount提供一个随机整数,而不是给catcountdogcount提供一个随机整数。我希望catcountdogcount用随机整数更新。

1 个答案:

答案 0 :(得分:3)

动态变量几乎从来不是一个好主意。请改用字典:

import random

itemlist = ['cat', 'dog']

count = { 'cat': 0, 'dog': 0 }

for item in itemlist:
    count[item] = random.randint(1,101)

然后只需dogcount就可以访问count['dog']catcount也一样。

我假设目的是为itemlist中的每个项目使用一个新变量。如果没有预先确定键(defaultdict),则可以使用cat, dogdefaultdict继承了dict,因此它将像普通的dict一样工作:

from collections import defaultdict
import random

itemlist = ['cat', 'dog', 'foo', 'bar', 'baz']

count = defaultdict(int)

for item in itemlist:
    count[item] = random.randint(1,101)

print(count) # defaultdict(int, {'cat': 100, 'dog': 84, 'foo': 34, 'bar': 11, 'baz': 42})

更好的是,您可以使用单行字典理解:

count = {item: random.randint(1,101) for item in itemlist}