2013-08-07 2 views
-1

У меня есть CSV с столбцом с именем availableexits. Его данные таким образом: 'N = 1, E = 4, S = 7'Из строки в ячейке csv в dict

Я хочу, чтобы положить его в Словаре так это выглядит:

d = {'N':1, 'E':4, 'S':7} 

(остановка там, если у вас есть ответ ниже только показывает, как я это делаю сейчас)

в настоящее время я читаю данные столбца в виде строки:

'N=1,E=4,S=7' 

потом разделить его на запятые г = d.split («»)

g = ['S=1', 'W=3', 'N=4'] 

тогда я разделить каждый из тех, на =

h = [] 
for x in g : 
    h.append(x.split("=")) 

#h is now [['N', '1'], ['E', '3'], ['S', '4']] 

, а затем бросили в Словаре

e = dict(h) #looks very German 

#e is now {'S': '1', 'W': '3', 'N': '4'} 

Я просто привести значение к междунар, когда я использую его.

У меня такое чувство, что я ужасный человек для этого. Что лучше.

ответ

2

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

s='N=1,E=4,S=7' 
dict(t.split('=') for t in s.split(',')) 

Вы можете принять это дальше, чтобы сделать значения ints:

dict((a,int(b)) for a,b in (t.split('=') for t in s.split(','))) 
+0

очень скользким, спасибо. j = dict ([t.split ("=") для t в raw.split (",")]) работает и намного красивее (чище тоже imo). Был надеется, что где-то есть что-то вроде списка (formattingString) => dict method. – jason

Смежные вопросы