Skip to main content
 首页 » 编程设计

python之如何在代表航类的字典中列出重复值

2025年05月04日21Terrylee

我有一个字典,里面有另一个字典和一些列表。

flightsD={"Delta":{1102:[["IND",1850],["MDW",1955]], 
               1096:[["PHX",900],["MDW",1255]], 
               1445:[["ATL",1135],["LAX",1810]], 
               1776:[["PHL",1350],["RAP",1610]], 
               1226:[["PHX",950],["MDW",1345]], 
               1885:[["ATL",1305],["LAX",2000]], 
               1009:[["MDW",1850],["IND",1955]], 
               9001:[["MDW",2145],["IND",2255]]}, 
      "Southwestern":{1111:[["SAT",430],["MDW",825]], 
                      2121:[["MDW",430],["SAT",825]], 
                      4335:[["PHX",450],["MDW",745]], 
                      1102:[["MDW",1100],["PHX",1450]]}, 
      "American":{7765:[["IND",1850],["CHA",2105]], 
               2133:[["BNA",900],["IND",1115]], 
               3321:[["HOU",1335],["ATL",1615]], 
               2100:[["BNA",900],["IND",1115]], 
               4311:[["HOU",905],["ATL",1255]], 
               5577:[["ATL",1100],["HOU",1350]], 
               1102:[["BNA",1100],["HOU",1450]]}  } 

如您所见,Delta、Southwestern 和 American 都有航类 1102。我想将所有重复的航类列为字典中的列表。 预期输出:

{1102: ['American', 'Southwestern', 'Delta']} 

我试过像这样遍历字典来访问这些值:

for airline in flightsD: 
    for flights in flightsD[airline]: 

我正在考虑制作一个列表来存储所有这些值,但我不完全确定如何去做

请您参考如下方法:

您可以遍历字典项,使用 dict.setdefault 初始化带有列表的输出字典以附加航空公司,并使用字典理解输出包含超过 1 个项目的子列表的项目:

d = {} 
for airline, flights in flightsD.items(): 
    for flight in flights: 
        d.setdefault(flight, []).append(airline) 
print({k: v for k, v in d.items() if len(v) > 1}) 

这个输出:

{1102: ['Delta', 'Southwestern', 'American']}