2013-10-10 52 views
2

假设我有以下列表:组元素的关键

mylist = [keyobj1, valobj1, valobj2, keyobj2, valobj1, valobj2, valobj3,...] 

我想获得一个字典由包含它的:

mydict = {keyobj1: [valobj1, valobj2], keyobj2: [valobj1,valobj2,valobj3, ...} 

是否有执行库这个任务?

下面是粗略的算法将被执行(我知道,相貌丑陋):

# convert mylist to iterator 
mylist = iter(mylist) 
n = mylist.next() 
while True: 
    try: 
     if not iskey(n): 
      n = mylist.next() 
      value_list.append(n) 
     else: 
      mydict[key] = value_list 
      value_list = [] 
      key = n 
      n = mylist.next() 
    except StopIteration: 
     mydict[key] = value_list 
     break 
+1

有没有必要手动迭代列表 - 只用于。 – jsbueno

回答

5

我会做这种方式:

mydict = defaultdict(list) 
sublist = None 
for item in mylist: 
    if iskey(item): 
     sublist = mydict[item] 
    else: 
     sublist.append(item) 

发生的唯一库我使用的是collections,对于defaultdict

+0

平原和简单,谢谢! – ProfHase85