2016-09-21 86 views
-4

我有列表下面的列表:轉換列表列表字典

[[u'3', u'4'], [u'4', u'5'], [u'7', u'8'], [u'1', u'2'], [u'2', u'3'], [u'6', u'7'], [u'5', u'6']] 

我想獲得:

{3:'4', 4:'5', 7:'8', 1:'2', 2:'3', 6:'7', 5:'6'} 

列表可能很長,所以它需要儘可能更高效。

每個「對」[[first, second], ...]的第一個元素是獨一無二的,所以我們可以根據它製作字典。

我試着用下面的,但我認爲這將是緩慢的:

def getdict(l): 
    result = {} 
    for e in l: 
     result[int(e[0])] = e[1] 
    return result 
+4

'dict(list_of_list)'是close - 唯一的區別是你不會有整數鍵......'dict((int(k),v)for k,v in list_of_list)' – mgilson

+1

什麼字典應該從輸入'[['1','2'],['1','3']]'生成? – Kevin

+0

@mgilson是的,我嘗試了第一個,我無法獲得ints。 – FacundoGFlores

回答

3

您可以使用字典解析

>>> l = [[u'3', u'4'], [u'4', u'5'], [u'7', u'8'], [u'1', u'2'], [u'2', u'3'], [u'6', u'7'], [u'5', u'6']] 
>>> {int(key): value for key, value in l} 
{1: u'2', 2: u'3', 3: u'4', 4: u'5', 5: u'6', 6: u'7', 7: u'8'} 

注意,你會「輸」之類的重複在@凱文的例子中:

>>> l = [['1', '2'], ['1', '3']] 
>>> {int(key): value for key, value in l} 
{1: '3'} 
1
my_dict = {} 
for item in my_list: 
    my_dict[int(item[0])] = item[1]