我使用.CSV文件来创建我的代码,但现在我想替换.CSV文件并要求用户输入。我的.CSV文件有两列:1)make和2)已售出,其中make是不同的车辆制造和销售有2014年销售的车辆的数量。此.CSV文件已被转换为字典。
我的问题是,如何向用户询问数据,以便我可以制作类似的字典(制作和销售)?我尝试询问一系列if和else语句,询问此输入,但必须有一种更优雅的方式来管理大量数据。
阅读我的文件给出(仅使用三个品牌作为例子):
{'Jeep': 1017019, 'Ford': 2480942, 'BMW': 1811719}
我想创建一个类似的字典,但只是要求用户输入。
答案 0 :(得分:1)
基本上,你需要一个循环。由于您无法提前知道使用while
循环进行多少次迭代。使用try-except
验证输入,并使用sentinel值让用户摆脱循环。
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'}
答案 1 :(得分: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}