2

ファイルを開き、その内容を部品番号を使用して辞書に保存する方法を見つけようとしています。キーとして、その他の情報を値として。だから私はそれを次のようにしたい:

{Part no.: "Description,Price", 453: "Sperving_Bearing,9900", 1342: "Panametric_Fan,23400",9480: "Converter_Exchange,93859"}

ファイルのテキストをリストに保存できましたが、キーに複数の値を割り当てる方法がわかりません。モジュールをインポートせずにこれを実行しようとしています。基本的な str メソッド、list メソッド、および dict メソッドを使用してきました。

4

5 に答える 5

9

そのtxtようなファイルの場合

453     Sperving_Bearing    9900
1342    Panametric_Fan      23400
9480    Converter_Exchange  93859

あなたはただすることができます

>>> newDict = {}
>>> with open('testFile.txt', 'r') as f:
        for line in f:
            splitLine = line.split()
            newDict[int(splitLine[0])] = ",".join(splitLine[1:])


>>> newDict
{9480: 'Converter_Exchange,93859', 453: 'Sperving_Bearing,9900', 1342: 'Panametric_Fan,23400'}

----...if をチェックするだけで、行を取り除くことができますline.startswith('-----')

編集- 最初の 2 行に同じ内容が含まれていることが確実な場合は、次のようにします。

>>> testDict = {"Part no.": "Description,Price"}
>>> with open('testFile.txt', 'r') as f:
        _ = next(f)
        _ = next(f)
        for line in f:
            splitLine = line.split()
            testDict[int(splitLine[0])] = ",".join(splitLine[1:])       
>>> testDict
{9480: 'Converter_Exchange,93859', 'Part no.': 'Description,Price', 453: 'Sperving_Bearing,9900', 1342: 'Panametric_Fan,23400'}

これにより、コードに最初の行が追加さtestDictれ、最初の 2 行がスキップされて、通常どおり続行されます。

于 2013-07-21T18:12:28.967 に答える
1

次のように、ファイルを行のリストに読み込むことができます。

lines = thetextfile.readlines()

次を使用して、単一行をスペースで分割できます。

items = somestring.split()

リストを辞書に格納する方法の主な例を次に示します。

>>>mylist = [1, 2, 3]
>>>mydict = {}
>>>mydict['hello'] = mylist
>>>mydict['world'] = [4,5,6]
>>>print(mydict)

タプル、リスト、ディクショナリなどのコンテナは、アイテムとして互いに入れ子にすることができます。

リストを反復するには、次のような for ステートメントを使用する必要があります。

for item in somelist:
    # do something with the item like printing it
    print item
于 2013-07-21T18:11:31.833 に答える
-1

値をリストまたはタプルとして保存する必要があります。このようなもの:

textname = input("ENter a file")
thetextfile = open(textname,'r')
print("The file has been successfully opened!")
thetextfile = thetextfile.read()
file_s = thetextfile.split()
holder = []
wordlist = {}
for c in file_s:
   wordlist[c.split()[0]] = c.split()[1:]
于 2013-07-21T18:10:57.797 に答える
-1

ファイルは次のようになります。

Part no.;Description,Price
453;Sperving_Bearin,9900
1342;Panametric_Fan,23400
9480;Converter_Exchange,93859

少しコードを追加するだけで済みます。

d = collections.OrderedDict()
reader = csv.reader(open('your_file.txt','r'),delimiter=';')
d = {row[0]:row[1].strip() for row in reader}
for x,y in d.items():
     print x
     print y
于 2013-07-21T18:42:19.010 に答える