2017-02-04 10 views
0

私は、Pythonに新しいですし、私が入力するコマンドラインから辞書を望んでいたし、キーコードの印刷の下に持っていませんエラー:AttributeError: 'str'オブジェクトに 'items'という属性がありません。のPython 3はDictionary.items strのオブジェクトは属性項目のエラー

私はそれを辞書を作成して印刷しようとすると、それがない:

data = {} 
data[str(0) + str(1)] = "A " + str(0) + " " + str(1.0) 

for key, value in data.items(): 
    print(key) 

なぜ私は、コマンドラインから辞書を入力することはできませんよとキーが印刷されていますか?私は辞書入力({'01': 'A 0 1.0'})を取って辞書変数、adictに格納しています。 adictは正しく印刷されますが、なぜアイテム()を使用できないのですか?間違って何かしていますか?

+1

!あなたは何を期待していますか?あなたのデータの鍵は何ですか? –

答えて

1

lineは文字列であり、あなたは取り除いた文字列にのみリバウンドadict名をしましたので、あなたはありません辞書、しかし文字列。

代わりに、入力された文字列から辞書を構築するためにast.literal_evalを使用することができます:あなたは単なる文字列であるラインで、あなたの辞書を上書き

import ast 

adict = ast.literal_eval(input()) 
+0

ありがとう。これは働いた – Tao

0

それがコードをどのように変化するかを見るためにあなたのadict種類を確認してください。

for line in sys.stdin: 

    adict ={} 
    line = line.strip() # line here is a string 
    adict = line # so adict will be a string 

    for key, value in adict.items(): # string doesn't have item attribute 
     print(key) 
+0

ありがとうございます。私はこれで多くを理解しました。しかし、私の問題は続く。私が正しい場合、sys.stdinの行は常に文字列です。私の入力は辞書です。文字列からキー、値を抽出するにはどうすればよいですか?分割は大変な作業であり、大きな入力に対しては間違っている可能性があります。私は何をすべきか? – Tao

+0

モーゼの答えを参照してください、彼はあなたに道を提案します – Arman

+0

ありがとう男。それは今働いた – Tao

関連する問題