1

ファイルを辞書にインポートしています。ファイルは次のような行で構成されています。

Category One?Category Two?Category Three?Category 4?Category 5

カテゴリ 1 とカテゴリ 2 に含まれる情報を 1 つのカテゴリに結合して、最終的にキーにする必要があることを意図して、各行を個々のカテゴリに分割しています。値。

私は以前にこれほど多くのカテゴリを扱ったことがないので (Cat1 = キーと Cat2 = 値を行ったことがある)、自分が知っていることをどのように適用するかについて少し混乱しています。

既にソース ファイルを収集して開いていると仮定すると、カテゴリが 2 つしかない場合は、次のようにします。

dict1 = {}
for line in file:
    k,v = line.split('?')
    dict1[k.strip()] = v.strip()

カテゴリ 1 とカテゴリ 2 のスポットのデータを機能的に 1 つのカテゴリに結合する方法も、カテゴリ 3 ~ 5 を個別の値に収集する方法もわかりません。今は、カテゴリ 1 = キーとカテゴリ その他 = 値に分割することに集中しています。行 3 を k,v,v,v,v に変更しても実際には機能しないようです。これ以上は残念です。これが生み出す

{'Category One': 'Category Five')

明らかな何かが欠けていますか?編集はい、確かにそうでした-そして、男の子、今朝もう一杯コーヒーが必要ですか. もちろん、すべてを v と呼ぶと、最後に v と呼んだものだけが得られます...

(明らかに、私のソース ファイルはこれとは異なって見えますが、基本的な構成は同じです。)

4

4 に答える 4

2

たぶん次のようなもの:

dict1 = {}
for line in file:
    x = line.strip().split('?')
    dict1[(x[0],x[1])] = x[2:]

あなたが望むことをするでしょう。ただし、最初に値をハッシュ可能なものに変換する必要があります。

于 2013-04-26T17:25:02.507 に答える
0

試す:

l = line.split('?')
d = dict([(k, v) for k,v in zip (l[::2], l[1::2])])
于 2013-04-26T17:25:54.667 に答える
0

あなたが何を必要としているのか完全にはわかりませんが、次のようなものが必要なようです:

wordsInLine = line.split( '?' )
key = wordsInLine[ 0 ], wordsInLine[ 1 ]    # first two are used as a key
value = wordsInLine[ 2: ]  # the rest are the 'value'
dictionary[ key ] = value

キーは実際には 2 つの値を持つタプルです。次のような値にアクセスできます。

dictionary[ ( x, y ) ]

お役に立てれば

于 2013-04-26T17:29:02.290 に答える
0

次のようなものが欲しいようです:

for line in file:
    k,v = line.split('?',1)
    dict1[k.strip()] = [x.strip() for x in v.split('?')]

次のようなことを行うと、少しきれいになるかもしれません。

for line in file:
    lsplit = [x.strip() for x in line.split('?')]
    dict1[lsplit[0]] = lsplit[1:]

ストリッピングを行う必要がない場合は、次を使用できますoperator.itemgetter

splitter = itemgetter(0,slice(1,None))
dict(splitter(x.split('?')) for x in file))
于 2013-04-26T17:27:17.507 に答える