Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向字典添加用户输入_Python_Dictionary_Input_While Loop - Fatal编程技术网

Python 向字典添加用户输入

Python 向字典添加用户输入,python,dictionary,input,while-loop,Python,Dictionary,Input,While Loop,在过去的几个小时里,我一直在尝试这一点,但我就是无法正确地获取代码。我想读入用户输入(例如“红色”、“蓝色”、“绿色”、“红色”),然后在字典中读出颜色和颜色的计数 这是我的代码-我知道它肯定有问题,尤其是在设置字典时(它还有一个while循环,不断请求输入,直到用户输入一个空格) 输入:“红色”、“蓝色”、“绿色”、“红色” dict = {} car_colours = input("Car: ") frequency = 0 while car_colours != '': dic

在过去的几个小时里,我一直在尝试这一点,但我就是无法正确地获取代码。我想读入用户输入(例如“红色”、“蓝色”、“绿色”、“红色”),然后在字典中读出颜色和颜色的计数

这是我的代码-我知道它肯定有问题,尤其是在设置字典时(它还有一个while循环,不断请求输入,直到用户输入一个空格)

输入:“红色”、“蓝色”、“绿色”、“红色”

dict = {}
car_colours = input("Car: ")
frequency = 0
  while car_colours != '':
  dict['frequency'] = car_colours.count(car_colours)
  dict['colours'] = car_colours
  frequency = frequency + 1
  car_colours = input("Car: ")
print(dict)
我还假设我需要一个for循环来获得下面所需的输出

期望输出

Cars that are red: 2
Cars that are blue: 1
我甚至不确定我是否需要上面的代码:

frequency = 0
frequency = frequency + 1

谢谢你的帮助

字典设置中几乎没有您怀疑的问题

“dict”是python中的一个关键字,我建议避免将其作为变量名。Python字典通常不按顺序排列。不要将频率和颜色名称分开,而是将颜色名称保存为键,将计数保存为值

以下是带有上述更改的代码:

d = {}
count = 0
car_colours = raw_input("Car: ")
while car_colours != '':
    if d.has_key(car_colours):
        d[car_colours] = d[car_colours] + 1
    else:
        d[car_colours] = 1
    count = count + 1
    car_colours = raw_input("Car: ")

for k,v in d.iteritems():
    print 'Cars that are ' + k + ": " + str(v)

以下是示例测试:

字典设置中几乎没有您怀疑的问题

“dict”是python中的一个关键字,我建议避免将其作为变量名。Python字典通常不按顺序排列。不要将频率和颜色名称分开,而是将颜色名称保存为键,将计数保存为值

以下是带有上述更改的代码:

d = {}
count = 0
car_colours = raw_input("Car: ")
while car_colours != '':
    if d.has_key(car_colours):
        d[car_colours] = d[car_colours] + 1
    else:
        d[car_colours] = 1
    count = count + 1
    car_colours = raw_input("Car: ")

for k,v in d.iteritems():
    print 'Cars that are ' + k + ": " + str(v)

下面是一个示例测试:

为什么不使用比dict更合适的数据结构呢

从集合导入defaultdict
打印“输入汽车颜色,完成后^C…”
尝试:
汽车计数=默认数字(整数)
尽管如此:
汽车颜色=原始输入(“汽车颜色:”)
汽车数量[汽车颜色]+=1
除键盘中断外:
打印
打印“完成输入,现在显示结果”
打印
对于c车内计数:
打印“属于%s的车辆:%d%”(c,车辆计数[c])
结果将是:

$ python dd.py 
Enter car colours and ^C when done...
Car colour: red
Car colour: red
Car colour: green
Car colour: blue
Car colour: ^C
Done with input, now the result

Cars that are blue: 1
Cars that are green: 1
Cars that are red: 2
$

注意:即使
car\u count=defaultdict(int)
中的
int
格式不正确,它也是一种数据类型。
defaultdict
扩展了
dict
,使得之前未访问过的每个索引自动被分配该类型的初始值。

为什么不使用比
dict
更合适的数据结构

从集合导入defaultdict
打印“输入汽车颜色,完成后^C…”
尝试:
汽车计数=默认数字(整数)
尽管如此:
汽车颜色=原始输入(“汽车颜色:”)
汽车数量[汽车颜色]+=1
除键盘中断外:
打印
打印“完成输入,现在显示结果”
打印
对于c车内计数:
打印“属于%s的车辆:%d%”(c,车辆计数[c])
结果将是:

$ python dd.py 
Enter car colours and ^C when done...
Car colour: red
Car colour: red
Car colour: green
Car colour: blue
Car colour: ^C
Done with input, now the result

Cars that are blue: 1
Cars that are green: 1
Cars that are red: 2
$


注意:即使
car\u count=defaultdict(int)
中的
int
格式不正确,它也是一种数据类型。
defaultdict
扩展了
dict
,这样之前未访问过的每个索引都会自动分配该类型的初始值。

请缩进代码-现在无法知道
lops的结束位置。您想在dict中存储什么?一次只能为每个唯一键存储一个值。很抱歉,@Wojciech Ptak代码现在已缩进。我想存储“color”,然后将“frequency”作为字典中的值。因此,对于每种颜色,它将计算用户输入颜色的次数(即频率)。查看Try first,运行不包含循环的最小程序,只询问用户一次,将该颜色存储在dict中并打印。这可能有助于您了解发生了什么,因为坦率地说,代码需要从头重写。请缩进代码-现在不可能知道
lops结束在哪里。您希望在dict中存储什么?一次只能为每个唯一键存储一个值。很抱歉,@Wojciech Ptak代码现在已缩进。我想存储“color”,然后将“frequency”作为字典中的值。因此,对于每种颜色,它将计算用户输入颜色的次数(即频率)。查看Try first,运行不包含循环的最小程序,只询问用户一次,将该颜色存储在dict中并打印。这可能会帮助您了解发生了什么,因为坦率地说,代码需要从头开始重写。非常感谢Vasanth,这看起来好多了!我可以问一下“d.has_key”是从哪里来的吗?这是一种检查key(颜色名称)是否已经存在的方法。如果已经存在,则增加计数器,否则将其添加到字典中。谢谢Vasanth,这很有意义。我知道它在您的计算机上工作,但我的计算机通过Spyder不断收到错误,但我觉得一切正常文件“”,行未知^SyntaxError:在分析您使用的python版本时出现意外EOF?你在哪一行得到错误?你能附加回溯吗?我使用的是Python 2.7。我不知道如何附加回溯。。。但它很可能是我的电脑特有的,所以一切都很好,瓦桑斯:-)再次感谢汉克斯,非常感谢瓦桑斯-这看起来好多了!我可以问一下“d.has_key”是从哪里来的吗?这是一种检查key(颜色名称)是否已经存在的方法。如果已经存在,则增加计数器,否则将其添加到字典中。谢谢Vasanth,这很有意义。我知道它在您的计算机上工作,但我的计算机通过Spyder不断收到错误,但我觉得一切正常文件“”,行未知^SyntaxError:在分析您使用的python版本时出现意外EOF?你在哪一行得到错误?你能附加回溯吗?我使用的是Python 2.7。我不知道如何附加回溯。。。但它很可能是我的电脑特有的,所以一切都很好,瓦桑斯:-)再次感谢