Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用字符串进行Python列表排序_Python_List_Sorting - Fatal编程技术网

用字符串进行Python列表排序

用字符串进行Python列表排序,python,list,sorting,Python,List,Sorting,我有一个按小时显示天气信息的字符串列表,如下所示: bad_list =['00:00', '-2°C', '-6°C', '320°13 Km/h', 'N/A', '74%', '-6°C', '1025,0mb', '', '01:00', '-1°C', '-3°C', '320°6 Km/h', 'N/A', '75%', '-5°C', '1024,0mb', '', '02:00', '-3°C', '-5°C', '270°6 Km/h', 'N/A', '86%', '-

我有一个按小时显示天气信息的字符串列表,如下所示:

bad_list =['00:00',  '-2°C', '-6°C', '320°13 Km/h', 'N/A', '74%', '-6°C', '1025,0mb', '',  
'01:00', '-1°C', '-3°C', '320°6 Km/h', 'N/A', '75%', '-5°C', '1024,0mb', '',
'02:00', '-3°C', '-5°C', '270°6 Km/h', 'N/A', '86%', '-5°C', '1023,0mb', '',
 .....(skipped hours from 03 till 09)
 '09:04',  '9°C', '5°C', '290°35 Km/h', 'N/A', '66%', '3°C', '1022,0mb', '',
 '10:00', '9°C', '5°C', '290°37 Km/h', 'N/A', '62%', '2°C', '1022,0mb', '',
 '10:27', '10°C', '6°C', '280°39 Km/h', 'N/A', '58%', '2°C', '1023,0mb', '',
 '11:02', '11°C', '11°C', '290°35 Km/h', 'N/A', '54%', '2°C', '1022,0mb', '',
 '11:10', '12°C', '12°C', '290°37 Km/h', 'N/A', '47%', '1°C', '1022,0mb', '',
  .....(skipped)
 '23:00', '3°C', '3°C',  'N/A', '52%', '-6°C', '1020,0mb', '',
 ]
问题是,在列表中,小时字符串很混乱,如示例所示,有“10:00”和“10:27”。我尝试的是收集每小时(从00:00到23:00)的temp(一小时后的下一个索引字符串)。在这个列表中,一个小时有超过24个字符串(以及相应的天气信息!)。 所以我想找出一小时内第一次出现的温度,然后从列表中得到下一个指数作为相应的温度:

unique_time = ['00:','01:','02:','03:','04:','05:','06:','07:','08:','09:','10:','11:','12:','13:','14:','15:','16:',
        '17:','18:','19:','20:','21:','22:','23:']

sorted_time_list = next(x for x in unique_time if x in bad_list) #not working
并获取bad_列表中排序的_time_列表对应的+1索引字符串。我知道这听起来很难看,但我只想得到24小时的临时字符串(bad_列表中小时字符串后的第二个元素)


我知道这听起来有点不清楚。如果需要更多详细信息,请告诉我:)

将您的项目分成9个项目(使用a),然后按每组的小时分组:

from itertools import groupby, zip_longest

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

by_hour = groupby(grouper(bad_list, 9), lambda g: g[0][:2])

temp_list = [(hour, next(entries)[1]) for hour, entries in by_hour]
这将生成一个
(hour,temp)
元组列表,其中生成给定小时的第一个温度

演示您给定的数据:

>>> from itertools import groupby, zip_longest
>>> def grouper(iterable, n, fillvalue=None):
...     args = [iter(iterable)] * n
...     return zip_longest(*args, fillvalue=fillvalue)
...
>>> by_hour = groupby(grouper(bad_list, 9), lambda g: g[0][:2])
>>> [(hour, next(entries)[1]) for hour, entries in by_hour]
[('00', '-2°C'), ('01', '-1°C'), ('02', '-3°C'), ('09', '9°C'), ('10', '9°C'), ('11', '11°C'), ('23', '3°C')]

我是python的新手,我正在尝试用自己的方法来解决这个问题。 下面是我的代码

final_result={}
for x, y in enumerate(unique_time):
    if (y in bad_list):
        final_result[y]=bad_list[x+1]
print(final_result)

在您的示例中,第一个元素始终是时间,数据以9为一组的形式出现,那么只需
坏列表[1::9]
?您就是我的英雄!谢谢你,朋友!