- 33 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:37:30 ]
- 今、下記のようなリストがあり、
list1 = ['cat', 'dog', 'spam', 'egg'] 下のマップで上記リストを変換したいと思います。 maps = {'animal': ['cat', 'dog']} 結果は以下を期待しています。 ['animal', 'animal', 'spam', 'egg'](あるいは、set(['animal', 'spam', 'egg']) その際、安直に上記を実装した、下のようなコードが思いつきました。 下のコードをmap関数やセット、lambda関数などなんでもいいので標準関数等を駆使して、とにかく短く表現できないか考えています。下記のコードはスマートな方でしょうか? ans = [] for elem in list1: for key, vals in maps.items(): if elem in vals: ans.append(key) else: ans.append(elem) print ans さらに、マップの要素が増えた場合、 maps = {'animal': ['cat', 'dog'],'food':['egg']} 他に、list1 = ['animal', 'spam', 'egg'] をもとにmaps = {'animal': ['cat', 'dog']}を用いて、元が復元できないか考えています。 >> ['cat','dog','spam', 'egg'] どなたかわかりますでしょうか?
|

|