2017-12-27 1569 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]))'' –