2015-06-24 77 views
0

我有一个迭代通过列表来添加项目到词典列表的问题。我相信我的问题是在list_to_dictionary函数。 “mun中的muns”返回列表中的项目“Mun”。它只是遍历列表一次,因为它表示列表中唯一的项目是“Mun”。我需要为每个事件创建一个字典。不知道是什么问题,谢谢。不能遍历字符串列表

#iterates though lists and puts value at location "count" 
#into a dictionary and loops until there are no more events 
def list_to_dictionary(): 
    count = 0 
    for muns in mun: 
     print muns 
     event = {'Agency ': agency[count], 'Time ': time[count], 'Units ': units[count], 'Description ': description[count], 'Street ': street[count], 'Cross Streets ': crossStreets[count], 'Municipality ': mun[count]} 
     count += 1 
     return event 

create_list(allTable) 
+0

elif的计数器是7: mun.extend([row.text]) 计数器= 1 – NeonLights86

回答

2

首先,将项目添加到列表中,你应该使用追加,不能延长。例如。 mun.append(row.text)代替mun.extend([row.text])

其次,在你的list_to_dictionary功能,你正在返回在循环的第一次迭代,所以它当然不会在整个列表循环。我假设你想要返回一个事件列表,而不是第一个事件。

三,你应该简化逻辑。而不是创建一堆列表,然后使用它们的索引来创建字典,为什么不在每个事件的第一个循环中创建一个字典并创建一个事件列表。

events = [] 
    event = {} 
    counter = 1 
    for row in allTable.findAll('td'): 
     if counter is not 8: 
      if counter is 1: 
       event['agency'] = row.text 
       counter += 1 
      elif counter is 2: 
       event['time'] = row.text 
       counter += 1 

...

  elif counter is 7: 
       event['mun'] = row.text 
       events.append(event) 
       event = {} 
       counter = 1 
+0

我喜欢这个,但是我在实现它之后遇到了另一个问题。 for事件: 打印e 一次又一次地返回相同的字典。 – NeonLights86

+1

对不起刚做了一个编辑 - 当计数器达到7时,必须重置事件变量7 –

+0

这很好,谢谢。 – NeonLights86

3
return event 

是你的循环中,因此该循环停止在第一次迭代。

你可能想事件添加到字典的列表,并后返回列表循环

def list_to_dictionary(): 
    count = 0 
    events = [] 
    for muns in mun: 
     print muns 
     event = {'Agency ': agency[count], 'Time ': time[count], 'Units ': units[count], 'Description ': description[count], 'Street ': street[count], 'Cross Streets ': crossStreets[count], 'Municipality ': mun[count]} 
     events.append(event) 
     count += 1 
    return events 
+0

哇感谢,退格一个凹槽固定它:) – NeonLights86