[python] 파일을 사전으로 변환하는 방법은 무엇입니까?

두 개의 열로 구성된 파일이 있습니다.

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)