簡體   English   中英

如何通過循環將變量添加到字典中?

[英]How can I add variables into a dictionary with a loop?

我是python的新手,我正在嘗試創建能夠完成我手工完成的所有工作的循環。 基本上創建所有行'#'變量,並從文件'game_catch.txt'中為它們分配特定的文本行,該文件內容如下:

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

(空格為Tabs,如果有任何區別)

然后創建另一個循環,將“#”變量的值分配給str'#'變量,同時將所有間距分開。 (我無法修改該文件,因為在其他計算機中它將與我上面發布的文件相同,所以我必須執行此步驟)

然后,更重要的是因為這是我完全卡住的地方,做了一個循環,用於完成將str'#'變量轉換為體育字典可以拾取的內容的所有細節,然后讀作{'Curving': 10}

在這里,我提供了我正在使用的代碼並嘗試簡化:

file = open('game_catch.txt','r')
line1 = file.readline()
line2 = file.readline()
line3 = file.readline()
line4 = file.readline()
line5 = file.readline()
line6 = file.readline()
line7 = file.readline()
line8 = file.readline()
line9 = file.readline()

str1 = line1.split()
str2 = line2.split()
str3 = line3.split()
str4 = line4.split()
str5 = line5.split()
str6 = line6.split()
str7 = line7.split()
str8 = line8.split()
str9 = line9.split()

sports = {}

key = ''
for i in str1[0:-1] :
    key += i + ' '

key = key[0:-1]

sports[key] = int(str1[-1])

對不起,我只想提供盡可能詳細的詳細信息。 如果有更有效的方法,請隨時告訴我。 謝謝

您可以通過迭代文件,分割每一行,並將該生成器中的對發送到dict()來獲得基本結構(將分數保持為字符串dict()

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

您可以通過創建生成器來分割每一行,然后解壓縮每一行並使用int()函數將分數轉換為整數:

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

您可以使用文字理解語法而不是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

這將是這樣的:

{'Curving': 10, 'Keep Away': 5, 'Dodgeball': 15}
file = 'game_catch.txt'
sports = {}

with open(file) as f:
 for line in f:
  parts = line.split()
  sports[parts[0]] = int(parts[-1])

希望這可以幫助。

這里的例子

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

暫無
暫無

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

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