我正在用 Python 撰寫一個程式,旨在從兩個字典中洗掉不常見的鍵及其關聯值。例如,給定以下字典:
games =
{ 'WYO': {2018: (41, 19)},
'SJSU': {2018: (31, 0)},
'EWU': {2018: (59, 24)},
'USC': {2018: (36, 39), 2020: (13, 38), 2021: (14, 45)},
'UTAH': {2018: (28, 24), 2019: (13, 38), 2020: (28, 45), 2021: (13, 24)},
'ORST': {2018: (56, 37), 2019: (54, 53), 2020: (38, 28), 2021: (31, 24)},
'ORE': {2018: (34, 20), 2019: (35, 37), 2020: (29, 43), 2021: (24, 38)},
'STAN': {2018: (41, 38), 2019: (49, 22), 2021: (34, 31)},
'CAL': {2018: (19, 13), 2019: (20, 33), 2021: (21, 6)},
'COLO': {2018: (31, 7), 2019: (41, 10)},
'ARIZ': {2018: (69, 28), 2021: (44, 18)},
'WASH': {2018: (15, 28), 2019: (13, 31), 2021: (40, 13)},
'ISU': {2018: (28, 26)},
'NMSU': {2019: (58, 7)},
'UNCO': {2019: (59, 17)},
'HOU': {2019: (31, 24)},
'UCLA': {2019: (63, 67)},
'ASU': {2019: (34, 38), 2021: (34, 21)},
'AFA': {2019: (21, 31)},
'USU': {2021: (23, 26)},
'PORT ST.': {2021: (44, 24)},
'BYU': {2021: (19, 21)},
'CMU': {2021: (21, 24)} }
和
comp_dict = {2018:(0,0), 2019:(0,0), 2020:(0,0), 2021:(0,0)}
我想從中洗掉所有鍵及其關聯值,games這些鍵與comp_dict. 結果將是:
{ 'UTAH': {2018: (28, 24), 2019: (13, 38), 2020: (28, 45), 2021: (13, 24)},
'ORST': {2018: (56, 37), 2019: (54, 53), 2020: (38, 28), 2021: (31, 24)},
'ORE': {2018: (34, 20), 2019: (35, 37), 2020: (29, 43), 2021: (24, 38)} }
我正在嘗試創建一個games被呼叫的副本commonteams,我可以從中洗掉不常見的元素。這是我到目前為止所擁有的:
def common_teams(data):
comp_dict = {2018:(0,0), 2019:(0,0), 2020:(0,0), 2021:(0,0)}
games = data
commonteams = games
for team,log in games.items():
if log.keys() != comp_dict.keys():
commonteams.pop(team)
return commonteams
uj5u.com熱心網友回復:
在這種情況下,通常最好將您想要的東西復制到一個新物件中,而不是修改您擁有的東西,尤其是在您迭代舊物件時。
def common_teams(data):
newdict = {}
for team,log in games.items():
if log.keys() == comp_dict.keys():
newdict[team] = log
return newdict
print(common_teams(games))
uj5u.com熱心網友回復:
這是一種使用方法dict.pop:
for k in list(games):
if games[k].keys() != comp_dict.keys():
games.pop(k)
輸出:
{'UTAH': {2018: (28, 24), 2019: (13, 38), 2020: (28, 45), 2021: (13, 24)},
'ORST': {2018: (56, 37), 2019: (54, 53), 2020: (38, 28), 2021: (31, 24)},
'ORE': {2018: (34, 20), 2019: (35, 37), 2020: (29, 43), 2021: (24, 38)}}
請注意,dict.pop這僅在此處有效,因為我們正在迭代games.keys()此處的副本。
uj5u.com熱心網友回復:
嗯...我更喜歡 dic 理解...
d = { k:v for k, v in games.items() if v.keys() == comp_dict.keys() }
如果您必須列印作為輸出示例,那么您可以使用 pprint()..
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441334.html
