Programing

사전을 사용하여 목록의 항목 수

crosscheck 2020. 6. 12. 00:02
반응형

사전을 사용하여 목록의 항목 수


이 질문에는 이미 답변이 있습니다.

저는 Python을 처음 사용하고 간단한 질문이 있습니다. 항목 목록이 있다고 말합니다.

['apple','red','apple','red','red','pear']

목록 항목을 사전에 추가하고 항목이 목록에 나타나는 횟수를 세는 가장 간단한 방법은 무엇입니까?위의 목록을 보려면 출력을 다음과 같이하십시오.

{'apple': 2, 'red': 3, 'pear': 1}

2.7과 3.1에는

Counter

이 목적에 대한 특별한 지시가 있습니다.

>>> from collections import Counter
>>> Counter(['apple','red','apple','red','red','pear'])
Counter({'red': 3, 'apple': 2, 'pear': 1})

나는 좋아한다 :

counts = dict()
for i in items:
  counts[i] = counts.get(i, 0) + 1

.get을 사용하면 키가없는 경우 기본값을 지정할 수 있습니다.


>>> L = ['apple','red','apple','red','red','pear']
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i in L:
...   d[i] += 1
>>> d
defaultdict(<type 'int'>, {'pear': 1, 'apple': 2, 'red': 3})

단순히리스트 속성 개수를 사용하십시오 \

i = ['apple','red','apple','red','red','pear']
d = {x:i.count(x) for x in i}
print d

출력 :

{'pear': 1, 'apple': 2, 'red': 3}

나는 항상 사소한 작업에 대해서는 아무것도 가져오고 싶지 않다고 생각했습니다. 그러나 컬렉션에 따라 잘못되었을 수 있습니다.

items = "Whats the simpliest way to add the list items to a dictionary "

stats = {}
for i in items:
    if i in stats:
        stats[i] += 1
    else:
        stats[i] = 1

# bonus
for i in sorted(stats, key=stats.get):
    print("%d×'%s'" % (stats[i], i))

count ()를 사용하는 것보다 iterable이 한 번만 수행되는 반면 count는 모든 반복에서 전체 항목을 검색 할 수 있기 때문에 이것이 바람직하다고 생각합니다. 이 방법을 사용하여 수 메가 바이트의 통계 데이터를 구문 분석했으며 항상 합리적으로 빨랐습니다.


collections.Counter를 고려하십시오 (python 2.7 이상에서 사용 가능).

https://docs.python.org/2/library/collections.html#collections.Counter


이건 어때요:

src = [ 'one', 'two', 'three', 'two', 'three', 'three' ]
result_dict = dict( [ (i, src.count(i)) for i in set(src) ] )

결과

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

L = ['apple','red','apple','red','red','pear']
d = {}
[d.__setitem__(item,1+d.get(item,0)) for item in L]
print d 

준다

{'pear': 1, 'apple': 2, 'red': 3}

참고 URL :

https://stackoverflow.com/questions/3496518/using-a-dictionary-to-count-the-items-in-a-list

반응형