簡體   English   中英

將標題的文本文件讀入字典

[英]Read text file of titles into dictionary

我有目的地的文本文件,我需要將它們讀入字典並根據出發地和目的地對其進行分類。

JFK MCO
ORD DEN
ORD HOU
DFW PHX
JFK ATL
ORD DFW
ORD PHX
ATL HOU
DEN PHX
PHX LAX
JFK ORD
DEN LAS
DFW HOU
ORD ATL
LAS LAX
ATL MCO
HOU MCO
LAS PHX
STL PDX

預期成績:

{'JKF' : {'MCO', 'ATL','ORD'}, 'ORD' : {'DEN' , 'HOU' , 'DFW' , 'PHX' , 'ATL' ........}}

主要思想是起點在左側,目的地在右側。 將目的地分組到每個起點。

您可以遍歷各行,拆分各行,然后使用dict.setdefault將目標存儲到以原始位置為鍵的集合dict中:

d = {}
with open('file.txt') as file:
    for line in file:
        orig, dest = line.split()
        d.setdefault(orig, set()).add(dest)

d變為:

{'JFK': {'ORD', 'ATL', 'MCO'}, 'ORD': {'DEN', 'HOU', 'ATL', 'DFW', 'PHX'}, 'DFW': {'PHX', 'HOU'}, 'ATL': {'MCO', 'HOU'}, 'DEN': {'PHX', 'LAS'}, 'PHX': {'LAX'}, 'LAS': {'PHX', 'LAX'}, 'HOU': {'MCO'}, 'STL': {'PDX'}}

使用非常基本的for循環和dictdefaultdict可以很容易地完成此操作

from collections import defaultdict
d = defaultdict(set)
with open("filename.txt", "r") as f:
    for line in f: 
        start, place = line.split()
        d[start].add(place)

也可以使用csv模塊來完成

from collections import defaultdict
import csv

d = defaultdict(set)
with open("filename.txt", "r") as f:
    r = csv.reader(f, delimiter=' ')
    for start, place in r: d[start].add(place)

當然,這導致defaultdict ,但你仍然可以使用它一樣的字典,如果你想d是使用后的真實字典d = dict(d)

嘗試這個

depart_place = ['JFK', 'ORD', 'ORD', 'DFW', 'JFK']
destination = ['MCO', 'DEN', 'HOU', 'PHX', 'ATL']

place_dict = {}

for place, dest in zip(depart_place, destination):
    if place in place_dict:
        place_dict[place].add(dest)
    else:
        place_dict[place] = {dest}

因此,從本質zip(depart_place, destination)我們正在遍歷由zip(depart_place, destination)導致的出發地點和目的地(place, dest)元組。 然后,我們檢查place已經在字典中,我們將追加destination它,否則,我們創建了一個新的key-value對的對place

暫無
暫無

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

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