2015-08-20 5 views
-6

У меня есть список, как это:список Convet Python в словаре

mylist = [ 
    {"name":"fname1","value":"ardian"}, 
    {"name":"frm2","value":"febri"}, 
    {"name":"frm3","value":"jalan ciwaruga"} 
] 

и я хочу этот список coverted в словарь, как это:

mydict = { 
    {"name":"fname1","value":"ardian"}, 
    {"name":"frm2","value":"febri"}, 
    {"name":"frm3","value":"jalan ciwaruga"} 
} 

Есть ли решение, чтобы сделать это?

+4

Это набор словарей. –

+1

это не словарь. у dictionarty есть ключи, иначе это не имеет смысла. какие у вас ключи? – njzk2

+0

Спасибо, Билл, за вашу коррекцию, так как я новичок в python, моими ключами являются: имя, фамилия и адрес. –

ответ

1

Я думаю, что знаю, что вы хотите сделать.

ли это:

mydict = {} 

for dic in mylist: 
    mydict.update({ dic['name']:dic['value'] }) 

Чтобы преобразовать список в этом:

mydict = { 
    'fname1':'ardian', 
    'frm2':'febri', 
    'frm3':'jalan ciwaruga' 
} 

Если вы хотите использовать индекс списка для преобразования в ключи, сделать это:

mydict = {} 

for i in range(len(mylist)): 
    mydict.update({ i:mylist[i] }) 

Чтобы преобразовать ваш список в это:

mydict = { 
    0:{"name":"fname1","value":"ardian"}, 
    1:{"name":"frm2","value":"febri"}, 
    2:{"name":"frm3","value":"jalan ciwaruga"} 
} 

Надеюсь, это поможет! Если я решаю неправильную проблему, не могли бы вы объяснить, что вам нужно для решения?

Edit: Чтобы получить доступ к каждому виду словаря, сделать это:

#For the first dictionary 
mydict['fname1'] # --> 'ardian' 
mydict['frm2'] # --> 'febri' 
mydict['frm3'] # --> 'jalan ciwargua' 

#For the second dictionary 
mydict[0] # --> {'name':'fname1', 'value':'ardian'} 
mydict[1] # --> {'name':'frm2', 'value':'febri'} 
mydict[2] # --> {'name':'frm3', 'value':'jalan ciwargua'} 

Однако второй словарь действует точно так же, как список, так что я не знаю, почему вы хотите. Было бы совершенно излишним, если вам не нужно что-то конкретное для этой цели ...

+0

, что именно то, что я имею в виду, второе. Но как, если я хочу, чтобы ключи были не целыми, а строками? –

+0

Можете ли вы перефразировать это? Я не понимаю, что вы имеете в виду? –

0

Вы можете просто сделать:

mylist = [ 
    {"name":"fname1","value":"ardian"}, 
    {"name":"frm2","value":"febri"}, 
    {"name":"frm3","value":"jalan ciwaruga"} 
] 

mydict = dict(enumerate(mylist)) 

, который дает:

{ 
    0: {'name': 'fname1', 'value': 'ardian'}, 
    1: {'name': 'frm2', 'value': 'febri'}, 
    2: {'name': 'frm3', 'value': 'jalan ciwaruga'} 
} 

или если вы хотите строковые ключи сделать :

mydict = dict((str(i), d) for i,d in enumerate(mylist)) 

, который дает:

{ 
    '0': {'name': 'fname1', 'value': 'ardian'}, 
    '1': {'name': 'frm2', 'value': 'febri'}, 
    '2': {'name': 'frm3', 'value': 'jalan ciwaruga'} 
} 

Документы для enumerate [1] и dict [2] могут помочь объяснить, что происходит!

[1] https://docs.python.org/2/library/functions.html#enumerate

[2] https://docs.python.org/2/library/functions.html#func-dict

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