Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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_Integer - Fatal编程技术网

计算由空格分隔的未指定数量的整数,并使用字典在python中查找每个数字的出现次数

计算由空格分隔的未指定数量的整数,并使用字典在python中查找每个数字的出现次数,python,dictionary,integer,Python,Dictionary,Integer,样本输出 Enter numbers separated by spaces :1 2 3 3 2 2 2 1 3 4 5 3 {'1': 2, '3': 4, '2': 4, '5': 1, '4': 1} 1 occurs 2 times 3 occurs 4 times 2 occurs 4 times 5 occurs one time 4 occurs one time 除了我尝试的每一个循环都说我不能将str转换为int之外,我非常感谢任何帮助,我已经关注这个问题好几个小

样本输出

Enter numbers separated by spaces :1 2 3 3 2 2 2 1 3 4 5 3 {'1': 2, '3': 4, '2': 4, '5': 1, '4': 1} 1 occurs 2 times 3 occurs 4 times 2 occurs 4 times 5 occurs one time 4 occurs one time 除了我尝试的每一个循环都说我不能将str转换为int之外,我非常感谢任何帮助,我已经关注这个问题好几个小时了。这是我在输入为string时尝试的东西,尝试为dictionary实现类似的东西

def countdigits (aString):  
  c = 10 * [0]

  for e in aString: 
    c[int(e)] += 1 

  return c 

def main (): 
  n = 0 

  for v in (countdigits(str(input('Enter a string: ')))): 
    if v == 1: 
      print(n, "occurs 1 time")
    elif v!=0:
      print(n, "occurs", v, "times")

    n += 1 

main()
对于给定的输出,我想要一个类似的解决方案,但使用字典

d = {i:data.count(i) for i in data}

for k,v in d:
    print "{0} occurs {1} times\n".format(k,v)
或类似下面评论中的示例:

import collections

for a,b in collections.Counter(data).items():
    print "{0} occurs {1} times\n".format(a,b)
试一试

或类似下面评论中的示例:

import collections

for a,b in collections.Counter(data).items():
    print "{0} occurs {1} times\n".format(a,b)

我只能猜测你是在尝试这样的事情

>>> user = "1 2 3 3 2 2 2 1 3 4 5 3" >>> data = int(user) Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '1 2 3 3 2 2 2 1 3 4 5 3'
应该行得通。注意,对于这个问题,您可能不需要转换为int。把数字留给str应该也行

我只能猜你是在尝试这样的事情

>>> user = "1 2 3 3 2 2 2 1 3 4 5 3" >>> data = int(user) Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '1 2 3 3 2 2 2 1 3 4 5 3'
应该行得通。注意,对于这个问题,您可能不需要转换为int。在不导入任何内容的情况下,将数字保留在str中也同样有效

nk="1 2 3 3 2 2 2 1 3 4 5 3"
nk=nk.split()
result={}
for x in nk:
    result.setdefault(x,0)
    result[x]+=1
print result
输出

{'1': 2, '3': 4, '2': 4, '5': 1, '4': 1}

不进口任何东西

nk="1 2 3 3 2 2 2 1 3 4 5 3"
nk=nk.split()
result={}
for x in nk:
    result.setdefault(x,0)
    result[x]+=1
print result
输出

{'1': 2, '3': 4, '2': 4, '5': 1, '4': 1}


count为每个元素扫描一次数据,因此这不是特别有效。图中,这将在已从拆分输入创建列表后执行。这里没有处理太花哨的事情,所以效率还不是问题。我只是选择1-2行的解决方案,哈哈。如果你想要简洁的代码,这里应该使用collections.Counter。然后你可以在计数器数据中写k,v:不知道那个模块。。嗯,谢谢@gnibbler-在我看来,您的评论中缺少了一个.items。e、 g.对于k,v在Counterdata.items.count中为每个元素扫描一次数据,因此这不是特别有效。该图将在已从拆分输入创建列表后执行。这里没有处理太花哨的事情,所以效率还不是问题。我只是选择1-2行的解决方案,哈哈。如果你想要简洁的代码,这里应该使用collections.Counter。然后你可以在计数器数据中写k,v:不知道那个模块。。嗯,谢谢@gnibbler-在我看来,您的评论中缺少了一个.items。e、 g.对于Counterdata.items中的k,v.如果您包含了实际给出错误的代码,那会更好。@gnibler是的,这就是我得到的错误,您怎么知道的!但是我如何计算输入中的每个不同的整数,我使用的循环只允许我计算输入的长度,我想计数方法允许我这样做,但每个元素只计算一次,此外,dictionary没有append方法,因此我需要实现一个循环,该循环将添加输入中每个“键”出现的次数,并将如上所述分配一个“值”。要使用dict,每次都需要检查键是否已经存在。一种方法是使用if e in d:。在else块中,放置d[e]=1如果您包含了实际产生错误的代码,那会更好。@gnibbler是的,这就是我得到的错误,您怎么知道的!但是我如何计算输入中的每个不同的整数,我使用的循环只允许我计算输入的长度,我想计数方法允许我这样做,但每个元素只计算一次,此外,dictionary没有append方法,因此我需要实现一个循环,该循环将添加输入中每个“键”出现的次数,并将如上所述分配一个“值”。要使用dict,每次都需要检查键是否已经存在。一种方法是使用if e in d:。在else块中,put d[e]=1不确定为什么有些人不喜欢从标准库中导入商品,但是使用.setdefault作为副作用不是很好。最好将这两行合并成result[x]=result.getx,0+1My大学惩罚我们使用内置模块或第三方模块,并让我们自己编写。通过不使用坏习惯来教授坏习惯,尽管这样更有效率。他们应该花更多的时间与他们一起回顾好的实践,而不是把它们全部删掉。不知道为什么有些人不喜欢从标准库中导入好的东西,但是使用.setdefault作为副作用不是很好。最好将这两行合并成result[x]=result.getx,0+1My大学惩罚我们使用内置模块或第三方模块,并让我们自己编写。通过不使用坏习惯来教授坏习惯,尽管这样更有效率。他们应该花更多的时间与他们一起回顾良好的实践,而不是把它们全部删掉。