以前にテキストファイルに出力された辞書があります。つまり、[in]:
dict_from_file = """foo\tfoobar, bar, foo foo\tFoo bar language, computing\nprog\t python, java, c, c++\t computing\nedibles\tcereal, milka, whatever\tfood"""
もともと、キーは列 1 で、エイリアスは列 2 にあり、列 3 は値です。最後の列がキーで、1 番目と 2 番目の列が値になるようにテキストファイルを変換する必要があります。
[アウト]:
Foo bar language\tfoobar, foo, bar, foo foo
computing\tfoobar, foo, bar, foo foo, python, java, c, c++, prog
food\tcereal, milka, whatever\tedibles
これを行う目的は、与えられた入力foo foo
を by getkeybyvalue()
function が返すようにすること['Foo bar language','computing']
です。
私は以下のようにそれをドンしてきました:
from collections import defaultdict
outdict = defaultdict(list)
def getkeybyvalue(dictionary, value):
return [i for i,j in dictionary.items() if value in j]
dict_from_file = """foo\tfoobar, bar, foo foo\tFoo bar language, computing\nprog\t python, java, c, c++\t computing\nedibles\tcereal, milka, whatever\tfood"""
for line in dict_from_file.split('\n'):
column1, column2, column3 = line.strip().split('\t')
#print column1, column2, column3
for c3 in column3.split(','):
c3 = c3.strip(', ')
outdict[c3].append(column1)
for c2 in column2.split(','):
outdict[c3].append(c2.strip(' ,'))
for k in outdict:
print k, outdict[k]
print getkeybyvalue(outdict, 'foo foo')
- これを行うためのより冗長な方法はありますか?
foo foo
私のpython辞書が返すようなテキストファイルを他にどのように読むべき['Foo bar language','computing']
ですか?