我有一个字典,里面有另一个字典和一些列表。
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']}
