【问题标题】:How to loop and make array object in python? [duplicate]如何在python中循环和制作数组对象? [复制]
【发布时间】:2019-09-10 05:19:40
【问题描述】:

我想做这样的数组对象:

{'book1':3, 'book2':4, 'book3':5}

来自这样的数组

['book1', 'book1', 'book1', 'book2', 'book2', 'book2', 
'book2', 'book3', 'book3', 'book3', 'book3', 'book3']

如何做到这一点?我的想法是循环的,但不知道计算相同的值

*抱歉解释不好

【问题讨论】:

  • 在 Python 中,第一个数据结构称为dictionary。循环当然是完成您想做的事情的有效方法。如果您有特定的问题或问题,我建议您阅读字典,尝试一下,并使用您的代码更新它。请注意,这不是必需的,但使用defaultdict 可以提供简洁的解决方案。

标签: python arrays json python-3.x


【解决方案1】:

collections.Counter 是一个方便的内置函数来完成这个确切的任务:

from collections import Counter

lst = ['book1', 'book1', 'book1', 'book2', 'book2', 'book2', 'book2', 'book3', 'book3', 'book3', 'book3', 'book3']
print(dict(Counter(lst)))

输出:

{'book1': 3, 'book2': 4, 'book3': 5}

【讨论】:

    【解决方案2】:

    你可以这样做:

    arr = ['book1', 'book1', 'book1', 'book2', 'book2', 'book2', 'book2', 'book3', 'book3', 'book3', 'book3', 'book3']
    
    final = {}
    
    # loop through each item in the array
    # if it is NOT found in the dictionary, put it
    # in the dictionary and give it a count of 1
    # if it IS found in the dictionary, increment its value
    for x in arr:
        if x in final:
            final[x] += 1
        else:
            final[x] = 1
    
    print(final)
    

    【讨论】:

      【解决方案3】:

      你也可以使用collections.Counter,它就是为这样的事情而设计的。

      from collections import Counter
      
      li =['book1', 'book1', 'book1', 'book2', 'book2', 'book2', 'book2', 'book3', 'book3', 'book3', 'book3', 'book3']
      print(dict(Counter(li)))
      #{'book1': 3, 'book2': 4, 'book3': 5}
      

      【讨论】:

        【解决方案4】:
        listA=['book1', 'book1', 'book1', 'book2', 'book2', 'book2', 'book2', 'book3', 'book3', 'book3', 'book3', 'book3']
        dictA={}
        for x in listA:
            if x in dictA.keys():
                dictA[x]+=1
            else:
                dictA[x]=1
        

        【讨论】:

        • :(我来晚了@zedfoxus这不是复制的
        • 除了作为纯代码答案之外,它还隐藏了 两个 保留字 listdict。这里还有其他风格问题,但可能很严重。请注意这一点,我建议采用PEP 8 以避免类似问题。
        • 好的,我已经解决了
        • 我想我再也不能获得声誉和特权了-_- :(
        • 技术上已修复。 :) 但我仍然建议阅读 PEP 8 链接。以统一的方式编写代码,就像大多数其他 Python 开发人员所做的那样,是确保代码易于阅读的好方法,这有助于可维护性。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 2016-10-31
        • 2021-02-21
        • 2018-11-24
        • 2017-12-29
        • 2021-02-09
        • 2020-09-04
        相关资源
        最近更新 更多