2013-07-17 2 views
1
['*a*', '*b*', '*c*', '*d*', '*f*','*g*'] 
['11', '22', '33', '44', '', '55'] 
['66', '77', '88', '', '99', '10'] 
['23', '24', 'sac', 'cfg', 'dfg', ''] 

нужно ставить в словаре как:Как преобразовать несколько списков в словари в python?

{a : ('11','66','23'),b : ('22','77','24'),c : ('33','88','sac'),d :('44','','cfg')} 

Строки считываются из CSV файла:

import csv 
csvFile = csv.reader(open("sach.csv", "rb")) 
for row in csvFile: 
    print row 

код, который попытался показано выше, Выход строки, показанной выше который имеет много списков. , пожалуйста, помогите мне поместить его в формат словаря, как показано выше.

+1

В вашем словаре нуждаются ключи, которые будут похожими: 'a',' 'a'' или '' * a *' '? –

ответ

7

Zip строки:

with open("sach.csv", "rb") as csv_infile: 
    reader = csv.reader(csv_infile) 
    yourdict = {r[0].replace('*', ''): r[1:] for r in zip(*reader)} 

zip() function делает сопряжение для вас, переходя в reader объекта с * аргументом Python будет цикл по строкам CSV и передать каждую строку в качестве отдельного аргумента zip() ,

+0

Спасибо за вашу работу – user2558589

+0

@martineau: поскольку пост OP в этой точке недействителен Python, если только 'a',' b' и т. Д. Являются локальными переменными, я не хотел касаться этой части. Просто неясно, были ли звездочки даже разметкой. Но спасибо за исправление отсутствующих ':'. –

+0

@Martijn: Правда, это немного двусмысленно, какие ключи результирующего словаря, так как они не цитируются в желаемом результате, показанном в вопросе OP, - но в показанных списках, которые были прочитаны из файла csv, они определенно строки со звездочками в них. Независимо от того, ваш ответ очень умный. – martineau

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