python字典和列表:如何转换它?

2024-07-01 08:16:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这类字典:

dic = {
'blahAA,
AA': [
    u'cat'
],
'blahBB,
BB': [
    u'dog',
    u'bird'
],
'blahCC,
CC': [
    u'fish',
    u'horse',
    u'elephant'
]

}

blahXX是internet链接,id为XX。 如何将其转换为这样的列表:

list = [['cat AA'], ['dog bird BB'], ['fish horse elephant CC']] 

可选: 理想情况下,我希望在Gtk界面(combobox)中显示每个元素(cat、dog bird等),而不显示XX,以便在选择时找到相应的internet地址:

示例:

cat --Gtk--> blahAA
dog bird --Gtk--> blahBB
fish horse elephant --Gtk--> blahCC

有可能吗? 谢谢

显示结果的实际代码是:

choice = self.liste.get_active_text()   # choice from the user
for url in self.links:
    if id in url: 
         adress = url
self.champ.set_text(adress)             # adress display

Tags: selfurlgtkcataabbdogfish
3条回答
list = [[" ".join(v + [k.rsplit(',')[-1]])] for k,v in dic.items()]
print list
>>> [v + [k.rsplit(',')[-1]] for k, v in dic.items()]
[['dog', 'bird', 'BB'], ['cat', 'AA'], ['fish', 'horse', 'elephant', 'CC']]

我不太明白您想要连接每个子列表中的所有值的目的,但是您可以使用strjoin方法:

>>> [' '.join(v + [k.rsplit(',')[-1]]) for k, v in dict.items()]
['dog bird BB', 'cat AA', 'fish horse elephant CC']

更新:如果您想从这些URL中删除.html部分,您可以执行以下操作

>>> [' '.join(v + [k[:-5].rsplit(',')[-1]]) for k, v in dict.items()]

k[:-5]返回一个没有最后5个字符的新字符串(在本例中是.html)。你知道吗

[' '.join(map(str, x[1] + x[0].split(',')[1:])) for x in dic.items()]

Out[115]: ['cat AA', 'fish horse elephant CC', 'dog bird BB']

(map(str,seq)的优点是,如果列表中的某个元素是TypeError的话,它不会抛出int异常-不能在Python中连接int和字符串,因为它是强类型语言,如果仍然是动态类型语言)

相关问题 更多 >

    热门问题