我如何用循环将变量添加到字典中?

2024-06-16 10:58:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python相当陌生,我正在尝试创建能够完成我手工完成的所有工作的循环。本质上,创建所有行“#”变量,并将文件游戏中的特定文本行分配给它们_捕获.txt'读起来像这样:

Curving                 10
Dodgeball               15
Keep Away               5
Kin-Ball                7
Prisoner Ball           21
Quidditch               30
Rundown (aka Pickle)    12
Yukigassen              18
Handball                25

(空格是制表符,如果有区别的话)

然后创建另一个循环,该循环将行“#”变量的值赋给str'#'变量,同时将所有间距分开。(我无法修改该文件,因为在其他计算机中,它将与我在上面发布的文件相同,因此我必须执行此步骤)

然后,更重要的是因为这是我完全陷入困境的地方,我做了一个循环来完成所有的细节工作,把str'#'变量转换成体育字典可以提取的变量,然后读作{'Curving':10}

在这里,我提供了我当前使用并试图简化的代码:

^{pr2}$

抱歉,我只是想提供尽可能多的细节。如果有更有效的方法可以让我知道。谢谢


Tags: 文件文本txt游戏细节手工keepkin
3条回答

通过迭代文件,拆分每一行,并将生成器中的对发送到dict(),可以得到一个基本结构(将分数保留为字符串):

with open('game_catch.txt') as f:
    d = dict(line.rsplit(maxsplit=1) for line in f)

通过创建一个生成器来拆分每一行,然后解压每一行并使用int()函数,可以将分数转换为整数:

^{pr2}$

您可以使用文字理解语法来代替dict()函数:

with open('game_catch.txt') as f:
    d = {name:int(score) for name, score in (line.rsplit(maxsplit=1) for line in f)}

当然,最重要的部分是查看教程,这样您就可以理解这些代码片段在做什么,并理解解释。循环和数据结构尤其重要。在

考虑到某些运动名称由多个单词组成,下面将把您的txt文件转换为字典:

lines = [line.rstrip('\n').split() for line in open('C:/Users/Simon/Desktop/test.txt')]

sports = {}

for el in lines:
    number = el.pop()
    curItem = ' '.join(el)

    sports[curItem] = int(number)

print sports

这会产生这样的结果:

^{pr2}$

此处为示例

trans-dict={'one':'wahed','two':'itnen','three':'talata'}

       print "ITER ITEMS", trans_dict.iteritems()

       for key, val in trans_dict.iteritems():

                   print "KEY", key

                   print "VAL", val

相关问题 更多 >