2017-05-18 14 views
0

.CSVファイルを使用してコードを作成しましたが、.CSVファイルを置き換えて入力を求めます。私の.CSVファイルには、1)makeと2)の2つの列があります。makeは異なる車種で、2014年に販売された車両の製造数が販売されています。この.CSVファイルは辞書に変換されています。特定の形式(Python 3.5)でユーザー入力を取得する

私の質問は、私が類似の辞書(製造販売)を作ることができるようにユーザーにデータを求めることができますか?私は、この入力を求める一連のif文とelse文を求めてみましたが、大量のデータを管理するためのより洗練された方法が必要です。

私のファイルを読み込むには、(単なる一例として3を使用します)を与える:

{'Jeep': 1017019, 'Ford': 2480942, 'BMW': 1811719} 

私は同様の辞書を作成したいのですが、ちょうど彼らの入力をユーザーに尋ねること。

答えて

1

本質的にループが必要です。ループの回数を事前に知ることができないので、whileループを使用することが適切です。 try-exceptを使用して入力を検証し、センチネル値を使用してユーザーがループから抜け出すようにします。

In [51]: data = {} 
    ...: while True: 
    ...:  inpt = input("Enter data seperated by a space, or 'done' when finished\n") 
    ...:  try: 
    ...:   k, v = inpt.split() 
    ...:  except ValueError: 
    ...:   if inpt.strip() == 'done': 
    ...:    break 
    ...:   print("Invalid input, please try again") 
    ...:  else: 
    ...:   data[k] = v 
    ...: 
Enter data seperated by a space, or 'done' when finished 
Jeep 10170 
Enter data seperated by a space, or 'done' when finished 
Ford 12321 
Enter data seperated by a space, or 'done' when finished 
BMW10202 
Invalid input, please try again 
Enter data seperated by a space, or 'done' when finished 
BMW 1020 
Enter data seperated by a space, or 'done' when finished 
done 

In [52]: data 
Out[52]: {'BMW': '1020', 'Ford': '12321', 'Jeep': '10170'} 
+0

ありがとうございました! try-exceptを使用することはありません。 –

1

あなたは、キーの値を取得し、辞書を生成するためにsplit()を使用しようとすることができます

d={} 
while True: 
    _input_ = raw_input() 
    if _input_: 
     try: 
      d[_input_.split()[0]]=int(_input_.split()[1]) 
     except Exception as e: 
      print e 
    else: 
     break 
print d 

Jeep 1 
BMW 2 
Ford 3 

{'Jeep': 1, 'BMW': 2, 'Ford': 3} 
関連する問題