我有一个关于排序xml2dict结果的问题。 我有一个这样的XML:python筛选器和从xml2dict排序的排序列表
的Python 2.7
<schedule>
<layout file="12" fromdt="2015-07-25 00:42:35" todt="2015-09-02 02:54:14" scheduleid="34" priority="0" dependents="30.jpg,38.mp4,39.mp4"/>
<layout file="10" fromdt="2015-08-25 00:42:32" todt="2015-09-02 02:54:03" scheduleid="34" priority="1" dependents="30.jpg,38.mp4,39.mp4"/>
</schedule>
中,我使用以下代码来导入到吡:
dict_schedule_xml = xmlFileToDict(filename)
layoutList.append(dict_schedule_xml['schedule']['layout'])
layoutList象下面这样:
[[OrderedDict([(u'@file', u'12'), (u'@fromdt', u'2015-07-24 00:42:35'), (u'@todt', u'2015-09-02 02:54:14'), (u'@scheduleid', u'34'), (u'@priority', u'0'), (u'@dependents', u'30.jpg,38.mp4,39.mp4')]), OrderedDict([(u'@file', u'10'), (u'@fromdt', u'2015-08-25 00:42:32'), (u'@todt', u'2015-09-02 02:54:03'), (u'@scheduleid', u'34'), (u'@priority', u'1'), (u'@dependents', u'30.jpg,38.mp4,39.mp4')])]]
,我想过滤掉一些不需要的条目,如下所示:
dict_filtered_layout_list = [s for s in layoutList if (onAirSchedule(s['@fromdt'],s['@todt']))]
dict_filtered_layout_list = sorted(dict_filtered_layout_list, key=lambda k: k['@priority'], reverse = True)
使用下面的自定义函数:
def onAirSchedule(fromdt, todt):
dt_now = datetime.now()
fromdt = datetime.strptime(fromdt,'%Y-%m-%d %H:%M:%S')
todt = datetime.strptime(todt,'%Y-%m-%d %H:%M:%S')
return (fromdt < dt_now < todt)
我不知道,每次我得到了错误
File "xibo_reader.py", line 91, in on_modified
dict_filtered_layout_list = [s for s in layoutList if (onAirSchedule(s['@fromdt'],s['@todt']))]
TypeError: list indices must be integers, not str
我想对大家有帮助这个,因为我不知道多少on ordereddict behavior ...
你能证明什么'layoutList'样子?你喜欢哪种类型的错误? –
更新后,我希望你能找到它更有意义。 – user1811678
layouList看起来像OrderDicts列表的列表,里面只有一个列表吗?你想让dict_filtered_layout_list成为orderedDicts的列表吗? –