2016-04-16 2 views
-4

У меня есть два столбца в виде текстового файла, как это:Как создать словарь с данными из текстового файла?

William 2 
David 3 
Victor 5 
Jack 1 
Gavin 4 

И я хочу, чтобы это было, как это в Словаре:

d = {'William': 2,'David': 3,'Victor': 5,'Jack': 1,'Gavin': 4} 

Как мне это сделать?

+1

Похоже, что вы хотите нам написать код для вас. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если есть), ожидаемого результата и выход, который вы фактически получаете (вывод консоли, трассировка и т. Д.). Чем больше деталей вы предоставляете, тем больше ответов вы получите. Проверьте [FAQ] и [ask]. –

+0

У меня осталось только 3 дня, чтобы выполнить эту задачу! –

ответ

0
myDictionary = {} 

with open('file.txt', 'r') as f: 
    for line in f: 
     myDictionary[line.split()[0]] = int(line.split()[1]) 

Вы можете прочитать больше на file i/o и dictionaries.

+0

он не работает. когда я запускаю программу, она идет пять раз !!! –

+0

@WilliamJi Это отлично работает для меня. Что вы подразумеваете под «пять раз»? –

+0

Для получения желаемого результата требуется небольшое изменение. 'line.split() [1]' должен быть 'int (line.split() [1]'. Во всяком случае, почему split дважды? –

0
data = dict(line.split() for line in open('file.txt', 'r')); 
+0

' .readlines() 'не требуется - 'open()' уже возвращает итератор (и является ленивым). Кроме того, квадратные скобки не нужны - нет необходимости создавать огромный список в памяти, когда выражение генератора может использоваться как входной аргумент 'dict'. –

+0

Да , это правда, спасибо –

+0

Но он не должен иметь верхнюю цитату ?! –

0

Вы можете использовать это:

d = {} 
with open('file.txt') as file:  
    for line in file.readlines(): 
     key, value = line.split() 
     d[key] = int(value) 
print(d) 

Выход:

{'David': 3, 'Gavin': 4, 'William': 2, 'Jack': 1, 'Victor': 5} 
Смежные вопросы