두 개의 열로 구성된 파일이 있습니다.
1 a
2 b
3 c
열 1이 키이고 열 2가 값이되도록이 파일을 사전에 읽어보고 싶습니다. 즉,
d = {1:'a', 2:'b', 3:'c'}
파일이 작기 때문에 효율성은 문제가되지 않습니다.
답변
d = {}
with open("file.txt") as f:
for line in f:
(key, val) = line.split()
d[int(key)] = val
답변
그러면 키가 문자열로 남습니다.
with open('infile.txt') as f:
d = dict(x.rstrip().split(None, 1) for x in f)
답변
다음 과 같은 사전 이해를 사용할 수도 있습니다 .
with open("infile.txt") as f:
d = {int(k): v for line in f for (k, v) in [line.strip().split(None, 1)]}
답변
def get_pair(line):
key, sep, value = line.strip().partition(" ")
return int(key), value
with open("file.txt") as fd:
d = dict(get_pair(line) for line in fd)
답변
사전 이해로
d = { line.split()[0] : line.split()[1] for line in open("file.txt") }
또는 판다
import pandas as pd
d = pd.read_csv("file.txt", delimiter=" ", header = None).to_dict()[0]
답변
IMHO는 생성기를 사용하는 데 좀 더 비단뱀 적입니다 (아마 2.7+가 필요합니다) :
with open('infile.txt') as fd:
pairs = (line.split(None) for line in fd)
res = {int(pair[0]):pair[1] for pair in pairs if len(pair) == 2 and pair[0].isdigit()}
또한 정수로 시작하지 않거나 정확히 두 항목을 포함하지 않는 행을 필터링합니다.
답변
import re
my_file = open('file.txt','r')
d = {}
for i in my_file:
g = re.search(r'(\d+)\s+(.*)', i) # glob line containing an int and a string
d[int(g.group(1))] = g.group(2)