簡體   English   中英

通過不同項的python字典中的相同鍵進行迭代

[英]Iterating through the same key in different items python dictionary

我有一本看起來像這樣的復雜字典。

{"Div 4 A Herrar": {
    "0": {"convertedTime": "86", "awayScore": "0", "homeTeam": "SKIF Semberija", "homeScore": "0", "awayTeam": "Floda BoIF", "time": "00:00", "events": []}, 
    "1": {"convertedTime": "40", "awayScore": "0", "homeTeam": "Partille IF FK ", "homeScore": "0", "awayTeam": "Kode IF", "time": "01:00", "events": []}, 
    "2": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Kongah\u00e4lla", "homeScore": "0", "awayTeam": "Romelanda UF", "time": "02:00", "events": []}, 
    "3": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Virgo", "homeScore": "0", "awayTeam": "United Africa FC", "time": "03:00", "events": []}, 
    "4": {"convertedTime": "", "awayScore": "0", "homeTeam": "Hisingsbacka FC", "homeScore": "0", "awayTeam": "Guldhedens IK", "time": "04:00", "events": []}, 
    "5": {"convertedTime": "", "awayScore": "0", "homeTeam": "IF Warta", "homeScore": "0", "awayTeam": "Bergums IF", "time": "05:00", "events": []}
    }
 "Div 5 A Herrar": {
    "0": {"convertedTime": "86", "awayScore": "0", "homeTeam": "SKIF Semberija", "homeScore": "0", "awayTeam": "Floda BoIF", "time": "00:00", "events": []}, 
    "1": {"convertedTime": "40", "awayScore": "0", "homeTeam": "Partille IF FK ", "homeScore": "0", "awayTeam": "Kode IF", "time": "01:00", "events": []}, 
    "2": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Kongah\u00e4lla", "homeScore": "0", "awayTeam": "Romelanda UF", "time": "02:00", "events": []}, 
    "3": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Virgo", "homeScore": "0", "awayTeam": "United Africa FC", "time": "03:00", "events": []}, 
    "4": {"convertedTime": "", "awayScore": "0", "homeTeam": "Hisingsbacka FC", "homeScore": "0", "awayTeam": "Guldhedens IK", "time": "04:00", "events": []}, 
    "5": {"convertedTime": "", "awayScore": "0", "homeTeam": "IF Warta", "homeScore": "0", "awayTeam": "Bergums IF", "time": "05:00", "events": []}
    }
}

還有更多項目,但是由於您有了字典的結構,因此無關緊要。

現在我需要做的是遍歷該詞典中的所有時間鍵,因為我將需要更改它們的值。 這意味着它將必須迭代“ Div 4 A Herrar”中的6個時間鍵/對值和“ Div 5 A Herrar”中的6個時間鍵/對值。 我到底該如何完成我完全迷失的事情

要獲得時間值:

for key1 in dict:
    for key2 in dict[key1]:
       dict[key1][key2]['time'] = 'newTime'

如果您提供的結構保持不變,則可以使用這兩種方法之一。 否則,您將必須創建一個遞歸函數。

dict_of_herrars = {
    #...
}  

方法1

# herrar = "Div 4 A Herrar", etc
for herrar, herrar_dict in dict_of_herrars.items():
    # game = "0","1",etc
    for game, game_dict in herrar_dict.items():
        game_dict["time"]="13:37"

方法2

def iter_time(dict_of_herrars):
    # herrar = "Div 4 A Herrar", etc
    for herrar, herrar_dict in dict_of_herrars.items():
        # game = "0","1",etc
        for game, game_dict in herrar_dict.items():
            def change_time(new_time,game_dict=game_dict):
                game_dict["time"]=newtime
            yield change_time

for change_time in iter_time(dict_of_herrars):
    change_time("13:37")

演示上repl.it

碼:

d = {"Div 4 A Herrar" : {
    "0": {"convertedTime": "86", "awayScore": "0", "homeTeam": "SKIF Semberija", "homeScore": "0", "awayTeam": "Floda BoIF", "time": "00:00", "events": []}, 
    "1": {"convertedTime": "40", "awayScore": "0", "homeTeam": "Partille IF FK ", "homeScore": "0", "awayTeam": "Kode IF", "time": "01:00", "events": []}, 
    "2": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Kongah\\u00e4lla", "homeScore": "0", "awayTeam": "Romelanda UF", "time": "02:00", "events": []}, 
    "3": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Virgo", "homeScore": "0", "awayTeam": "United Africa FC", "time": "03:00", "events": []}, 
    "4": {"convertedTime": "", "awayScore": "0", "homeTeam": "Hisingsbacka FC", "homeScore": "0", "awayTeam": "Guldhedens IK", "time": "04:00", "events": []}, 
    "5": {"convertedTime": "", "awayScore": "0", "homeTeam": "IF Warta", "homeScore": "0", "awayTeam": "Bergums IF", "time": "05:00", "events": []}
    },
 "Div 5 A Herrar" : {
    "0": {"convertedTime": "86", "awayScore": "0", "homeTeam": "SKIF Semberija", "homeScore": "0", "awayTeam": "Floda BoIF", "time": "00:00", "events": []}, 
    "1": {"convertedTime": "40", "awayScore": "0", "homeTeam": "Partille IF FK ", "homeScore": "0", "awayTeam": "Kode IF", "time": "01:00", "events": []}, 
    "2": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Kongah\\u00e4lla", "homeScore": "0", "awayTeam": "Romelanda UF", "time": "02:00", "events": []}, 
    "3": {"convertedTime": "", "awayScore": "0", "homeTeam": "IK Virgo", "homeScore": "0", "awayTeam": "United Africa FC", "time": "03:00", "events": []}, 
    "4": {"convertedTime": "", "awayScore": "0", "homeTeam": "Hisingsbacka FC", "homeScore": "0", "awayTeam": "Guldhedens IK", "time": "04:00", "events": []}, 
    "5": {"convertedTime": "", "awayScore": "0", "homeTeam": "IF Warta", "homeScore": "0", "awayTeam": "Bergums IF", "time": "05:00", "events": []}
    }
}

for i in d:
    for j in d[i]:
        for k in d[i][j]:
            if k == "time":
                print "Original Time: ", d[i][j][k]
                d[i][j][k] = "something"
                print "Changed to: ", d[i][j][k]

輸出:

Original Time:  01:00
Changed to:  something
Original Time:  00:00
Changed to:  something
Original Time:  03:00
Changed to:  something
Original Time:  02:00
Changed to:  something
Original Time:  05:00
Changed to:  something
Original Time:  04:00
Changed to:  something
Original Time:  01:00
Changed to:  something
Original Time:  00:00
Changed to:  something
Original Time:  03:00
Changed to:  something
Original Time:  02:00
Changed to:  something
Original Time:  05:00
Changed to:  something
Original Time:  04:00
Changed to:  something

暫無
暫無

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

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