python - 按字母顺序打印字典项目

标签 python xml xbmc

我正在编写 python 脚本,以便每次使用以下代码插入项目时都可以听写 channel 项目:

channels = {}
for elem in tv_elem.getchildren():
    if elem.tag == 'channel':
       channels[elem.attrib['id']] = self.load_channel(elem)
       for channel_key in channels:
           channel = channels[channel_key]
           display_name = channel.get_display_name()
           print display_name

这是打印出来的内容:

20:58:02 T:6548  NOTICE: BBC One UK EN
20:58:02 T:6548  NOTICE: SVT 1 SE SE
20:58:02 T:6548  NOTICE: National Geographic Channel UK EN
20:58:02 T:6548  NOTICE: NRK1 NO NO
20:58:02 T:6548  NOTICE: Discovery Channel UK EN
20:58:02 T:6548  NOTICE: ARD DE DE
20:58:02 T:6548  NOTICE: DR1 DK DK

这是 XML 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<tv generator-info-name="www.timefor.tv/xmltv">
        <channel id="www.timefor.tv/tv/162">
            <display-name lang="de">ARD DE DE</display-name>
        </channel>
        <channel id="www.timefor.tv/tv/1">
            <display-name lang="dk">DR1 DK DK</display-name>
        </channel>
        <channel id="www.timefor.tv/tv/130">
            <display-name lang="no">NRK1 NO NO</display-name>
        </channel>
        <channel id="www.timefor.tv/tv/135">
            <display-name lang="se">SVT 1 SE SE</display-name>
        </channel>
        <channel id="www.timefor.tv/tv/10769">
            <display-name lang="en">BBC One UK EN</display-name>
        </channel>
        <channel id="www.timefor.tv/tv/10214">
            <display-name lang="en">National Geographic Channel UK EN</display-name>
        </channel>
        <channel id="www.timefor.tv/tv/10847">
            <display-name lang="en">Discovery Channel UK EN</display-name>
        </channel></tv>

我想按照与 XML 文件相同的字母顺序打印它们,但我打印的顺序与 XML 文件的顺序不同。您知道如何使用我的代码以与 XML 文件相同的字母顺序打印项目吗?

最佳答案

根据您的解释:

#Additional import
from collections import OrderedDict
channels = OrderedDict()
for elem in tv_elem.getchildren():
    if elem.tag == 'channel':
       channels[elem.attrib['id']] = self.load_channel(elem)
       for channel_value in channels.items():
           print channel_value.get_display_name()

注意:这将为您提供与从 XML 中读取它们相同的顺序,不是字母顺序

编辑:由于您使用的是 Python 2.6,所以有一个小解决方法:

channels = []
for elem in tv_elem.getchildren():
    if elem.tag == 'channel':
       channels.append( (elem.attrib['id'], self.load_channel(elem)) )
       for channel_value in channels:
           print channel_value[1].get_display_name()

关于python - 按字母顺序打印字典项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305699/

相关文章:

python - 如何在 XBMC 上安装 Python 脚本以在启动时自动启动它

python - xbmc/kodi python 使用 BeautifulSoup 抓取数据

python - 强制 Selenium 暂停并等待字段可用

python - Instagram 实时 API 看不到我的服务器

java - VTD-XML 和 Xpath 2.0 转义字符串

android - 如何在CheckedtextView中对齐右侧的复选框

linux - 从 shellscript 检测 XBMC 是否正在播放?

python - Odoo 向导 : How to populate with active fields from parent view

python - 将自定义类转换为标准 Python 类型

xml - 如何向 Facebook 提交错误报告?