Pythonのお勉強 Part31at TECHPythonのお勉強 Part31 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト37:デフォルトの名無しさん 09/01/03 22:29:30 def foo(l, i, k): l[i] = k for k, v in maps.items(): for w in v: if list1.count(w): foo(list1, list1.index(w), k) print(list1) for k, v in maps.items(): for w in v: if list1.count(k): foo(list1, list1.index(k), w) print(list1) 初心者なので腕試しのつもりで書きました かなり行数使ってますが 38:デフォルトの名無しさん 09/01/03 22:30:11 >>35 コードもらいました これで逆変換 list1 = ["cat", "dog", "spam", "egg"] maps = {"animal": ["cat", "dog"]} transpose = lambda mps: dict((x, key) for key, xs in maps.iteritems() for x in xs) transform = lambda lst, mps: [item in mps.keys() and mps[item] or item for item in lst] itransform = lambda lst, mps: sum([item in mps.keys() and mps[item] or [item] for item in lst], []) #>>> import trans #>>> m = trans.transpose(trans.maps) ##>>> trans.transform(trans.list1, m) #['animal', 'animal', 'spam', 'egg'] #>>> s = set(trans.transform(trans.list1, m)) #>>> trans.itransform(trans.list1, trans.maps) #['cat', 'dog', 'spam', 'egg'] 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch