为什么这只是将名称写入文件而不是scoreavg2

时间:2015-01-22 21:49:36

标签: python

data = {name:[scoreavg2]}
for k,v in data.items():
    f.write(k + ": " + str(v))

当我运行此代码并输入数据时,它只会写入变量名称,但不会写入平均分数。

2 个答案:

答案 0 :(得分:1)

根据定义,迭代字典只能遍历键。如果您明确地(for key in data:)或隐式地(list(data)f.writelines(data)执行此操作并不重要。

如果要迭代键和值,请使用.iteritems()(Python 2)或.items()(Python 3):

data = {name:[scoreavg2]}
for k,v in data.items():
    f.write("{}: {}\n".format(k, v))

答案 1 :(得分:1)

让我们创建一些示例数据:

>>> data = {'dog':80, 'cat':90}

现在,让我们以有用的格式将其写入文件:

>>> filehandle.writelines('%s: %s\n' % item for item in data.items())

该文件将包含:

dog: 80
cat: 90

如何运作

我们有一个包含多个项目的字典,我们希望以一些有用的形式打印它们。我们分两步完成。

首先,要获取字典中的项目,我们使用data.items()。这将返回键,值对。

其次,对于每个键值对,我们需要对其进行格式化。在这里,我选择了键后跟冒号和空格,后跟值和换行符:'%s: %s\n' % item。把它们放在一起看起来像;

'%s: %s\n' % item for item in data.items()

这是我们写入文件的内容。