Python – файл в словарь?

У меня есть файл, содержащий два столбца, т. Е.

1 a 2 b 3 c 

Я хочу прочитать этот файл в словаре, так что столбец 1 является ключом, а столбец 2 – значением, т. Е.

 d = {1:'a', 2:'b', 3:'c'} 

Файл небольшой, поэтому эффективность не является проблемой.

Спасибо, С.

8 Solutions collect form web for “Python – файл в словарь?”

 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) 

Если ваша версия python равна 2.7+, вы также можете использовать понимание dict :

 with open('infile.txt') as f: {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) 
 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) 

Если вы любите один лайнер, попробуйте:

 d=eval('{'+re.sub('\'[\s]*?\'','\':\'',re.sub(r'([^'+input('SEP: ')+',]+)','\''+r'\1'+'\'',open(input('FILE: ')).read().rstrip('\n').replace('\n',',')))+'}') 

Вход FILE = путь к файлу, SEP = символ разделителя ключа

Не самый элегантный или эффективный способ сделать это, но, тем не менее, довольно интересно 🙂

IMHO немного больше pythonic для использования генераторов (возможно, для этого вам нужно 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()} 

Это также отфильтровывает строки, не начинающиеся с целого числа или не содержащие ровно два элемента

Вот еще один вариант …

 events = {} for line in csv.reader(open(os.path.join(path, 'events.txt'), "rb")): if line[0][0] == "#": continue events[line[0]] = line[1] if len(line) == 2 else line[1:] 
  • Как искать словарные ключи в списке
  • Сортировка словарных ключей по значению, затем значения с одинаковым значением в алфавитном порядке
  • Python: создание словаря из текста / файла в формате словаря
  • Группировка ключей словаря Python в виде списка и создание нового словаря с этим списком в качестве значения
  • dict.get () - аргумент по умолчанию оценивается даже после успеха
  • Как отсортировать словарь по значению?
  • словарь сортировки python по длине значений
  • Как изменить размер словаря во время итерации в Python
  •  
    Interesting Posts for Van-Lav

    Использование управления xonxoff-flow с помощью pyserial

    Идиоматический способ разбора временных меток POSIX в пандах?

    Выполнение двух запросов HTTP POST в колбе

    Как добавить встроенные функции

    Django почему-то не хочет импортировать одну конкретную модель

    Чтение / запись значений с использованием Ethernet / IP

    Настройка внешнего ключа для абстрактного базового класса с помощью Django

    sys.argv , IndexError: индекс индекса вне диапазона

    Учитывая большой список URL-адресов, какой способ проверить, какие из них активны / неактивны?

    Вычисление размера каталога с помощью Python?

    Как разместить ссылку / url на домашней странице веб-сайта в Django?

    Как назначить / обновить подмножество общей переменной тензора в Theano?

    почему scikitlearn говорит, что оценка F1 плохо определена с FN больше 0?

    Заполнение матрицы numpy из разности двух векторов

    Python: Итерация через словарь дает мне «int object not iterable»

    Python - лучший язык программирования в мире.