2017-12-27 512 views
-7
listim=[['1' ,'2'], ['3' , '4'], ['1', '5'], ['4', '1']] 

我想使利用listim每個號碼字典,字典分配

我想有d = { '1':2,4,5, '2':1 '3' :4,(...等)}

我的代碼是(我無法找到的錯誤,但大概字典):

a=1 
dic={} 
while a<6: 
    for number in listim: 
     if number[0]==a: 
      if number[1] not in dic[a]: 
       dic[a].append(number[1]) 
     elif number[1]==a: 
      if number[0] not in dic[a]: 
       dic[a].append(number[0]) 
     a+=1 

我無法找到網頁上的足夠的信息, (我知道我可以)。我希望我很清楚。謝謝

+3

這'd = {'1':2,4,5,'2':1,'3':4 ...'沒有意義。更好地解釋。 – khelwood

+0

你的例子輸出不是一個有效的Python文字,它不清楚你想要什麼。 –

+0

我投票關閉這個問題不明確,因爲所需的結果是無效的Python。 – timgeb

回答

-1
dic = {} 
for k,v in listim: 
    dic[k] = int(v) 

甚至更​​短:

dic = {k:int(v) for k,v in listim} 
1

讓我們用列表作爲工廠使用defaultdict從集合:

from collections import defaultdict 

d = defaultdict(list) 

listim=[['1' ,'2'], ['3' , '4'], ['1', '5'], ['4', '1']] 

for i in listim: 
    d[i[0]].append(int(i[1])) 

dict(d) 

輸出:

{'1': [2, 5], '3': [4], '4': [1]} 
+1

這個輸出不符合'd = {'1':2,4,5,'2':1,'3':4,(...依此類推)}' – vaultah

+0

同意,但我假定OP想要每個鍵的值列表,這種方法提供了。 –

+0

我認爲OP請求for循環中的另一行:'d [i [1]]。append(int(i [0]))'' –