尝试遍历一个字典中的多个列表

时间:2018-11-16 20:32:07

标签: python list csv dictionary iteration

我有一个字典,里面充满了我需要同时遍历的各种列表。目的是创建一个由逗号分隔的值组成的字符串作为列,但我只是不太正确。

到目前为止,我最接近的是:

    self.headers = ''
    self.body = ''
    self.headers_temp = ''
    self.body_temp = {}
    self.body_temp1 = {}
    self.body_temp2 = ''
    # comma separated headers
    for key in sorted(self.hist_data):
        self.headers_temp += ',' + key
        self.body_temp[key] = str(self.hist_data[key]).strip('[]')
    print'Headers Temp: ', self.headers_temp, '\n'
    print'Body Temp: ', self.body_temp, '\n'
    for key in self.body_temp:
        self.body_temp1[key] = self.body_temp[key].split(', ')
    print'Body Temp 1: ', self.body_temp1, '\n'
    for key in self.body_temp1:
        for string in self.body_temp1[key]:
            self.body_temp2 += ',\n' + str(string).strip('[]')       
    print'Body Temp 2: ', self.body_temp2, '\n'
    if self.headers == '':
        # dont include the leading ','
        self.headers = self.headers_temp[1:]
    if self.body == '':
        # dont include the leading ',\n'    
        self.body = self.body_temp2[2:]
    print'Headers: ', self.headers, '\n'
    print'Body: ', self.body, '\n'
    service.write_file('myTrades_'+ service.time_to_string(service.system_time, '%Y-%m-%d'), self.headers + '\n' + self.body, mode='overwrite')

输出:

Init has started...

Start has started... 2018-10-31 09:30:00.000000

Time:  ['2018-10-30 15:55', '2018-10-30 15:56', '2018-10-30 15:57', '2018-10-30 15:58', '2018-10-30 15:59'] 

Open:  [34.729999542236328, 34.654998779296875, 34.685001373291016, 34.679901123046875, 34.724998474121094] 

Headers Temp:  ,open,time 

Body Temp:  {'open': '34.729999542236328, 34.654998779296875, 34.685001373291016, 34.679901123046875, 34.724998474121094', 'time': "'2018-10-30 15:55', '2018-10-30 15:56', '2018-10-30 15:57', '2018-10-30 15:58', '2018-10-30 15:59'"} 

Body Temp 1:  {'open': ['34.729999542236328', '34.654998779296875', '34.685001373291016', '34.679901123046875', '34.724998474121094'], 'time': ["'2018-10-30 15:55'", "'2018-10-30 15:56'", "'2018-10-30 15:57'", "'2018-10-30 15:58'", "'2018-10-30 15:59'"]} 

Body Temp 2:  ,
34.729999542236328,
34.654998779296875,
34.685001373291016,
34.679901123046875,
34.724998474121094,
'2018-10-30 15:55',
'2018-10-30 15:56',
'2018-10-30 15:57',
'2018-10-30 15:58',
'2018-10-30 15:59' 

Headers:  open,time 

Body:  34.729999542236328,
34.654998779296875,
34.685001373291016,
34.679901123046875,
34.724998474121094,
'2018-10-30 15:55',
'2018-10-30 15:56',
'2018-10-30 15:57',
'2018-10-30 15:58',
'2018-10-30 15:59' 

如您所见,我最终将转换为一长列数据,而不是将每个列表本质上都添加到同一行中。如何获得该值,以便在添加换行符之前从每个键取一个值?

我当前的输出在上面。如您所见,我从时间和开放开始,它们是历史数据字典中的列表。然后,我试图找到一种将两个列表“压缩”在一起的方法,以便在移至第二个项目之前先取每个列表的第一个值。

我不确定“ zip”是否是正确的术语,或者如果我需要从字典中拉出每个字典列表来开始。

最终的目标是利用一个笨拙的“ file_writer”对象,该对象需要一个布局完美的文本字符串。

有一种比我目前正在做的更好的方法。

感谢您的帮助!

0 个答案:

没有答案