simple question on list manipulation from a newbie

Sam Denton stdenton at sbcglobal.net
Sat Jun 7 23:38:19 CEST 2008


Sengly wrote:
> Dear all,
> 
> I am working with wordnet and I am a python newbie. I'd like to know
> how can I transfer a list below
> 
> In [69]: dog
> Out[69]:
> [{noun: dog, domestic_dog, Canis_familiaris},
>  {noun: frump, dog},
>  {noun: dog},
>  {noun: cad, bounder, blackguard, dog, hound, heel},
>  {noun: frank, frankfurter, hotdog, hot_dog, dog, wiener, wienerwurst,
> weenie},
>  {noun: pawl, detent, click, dog},
>  {noun: andiron, firedog, dog, dog-iron}]
> 
> to a list like this with python:
> 
> [dog, domestic_dog, Canis_familiaris,
> frump, dog,
> dog,
> cad, bounder, blackguard, dog, hound, heel,
> frank, frankfurter, hotdog, hot_dog, dog, wiener, wienerwurst,
> weenie},
> pawl, detent, click, dog},
> andiron, firedog, dog, dog-iron]

I can't help you with the formatting, but here's a solution using Python 
data structures:

 >>> alist = [
     {'noun': ('dog', 'domestic_dog', 'Canis_familiaris')},
     {'noun': ('frump', 'dog')},
     {'noun': ('dog',)},
     {'noun': ('cad', 'bounder', 'blackguard', 'dog', 'hound', 'heel')},
     {'noun': ('frank', 'frankfurter', 'hotdog', 'hot_dog', 'dog', 
'wiener', 'wienerwurst', 'weenie')},
     {'noun': ('pawl', 'detent', 'click', 'dog')},
     {'noun': ('andiron', 'firedog', 'dog', 'dog-iron')},
     ]

 >>> merged = {}
 >>> for d in alist:
         for key, value in d.iteritems():
             merged.setdefault(key, []).extend(value)

 >>> merged
{'noun': ['dog', 'domestic_dog', 'Canis_familiaris', 'frump', 'dog', 
'dog', 'cad', 'bounder', 'blackguard', 'dog', 'hound', 'heel', 'frank', 
'frankfurter', 'hotdog', 'hot_dog', 'dog', 'wiener', 'wienerwurst', 
'weenie', 'pawl', 'detent', 'click', 'dog', 'andiron', 'firedog', 'dog', 
'dog-iron']}



More information about the Python-list mailing list