簡體   English   中英

每個不同鍵的值計數

[英]Count of values for each distinct key

我的python代碼是這樣的:

d={'abc':'movies', 'abc': 'sports', 'abc': 'music', 'xyz': 'music', 'pqr':'music','pqr':'movies', 'pqr':'sports', 'pqr':'news', 'pqr':'sports'}

b=[j[0] for i in d for j in i.items()]

for k in list(set(b)):
    print "{0}: {1}".format(k, b.count(k))

我需要分別打印每個鍵的不同值數量。 那意味着我要打印

abc 3
xyz 1
pqr 4

我收到一個錯誤: AttributeError: 'str' object has no attribute 'items'請幫助!

您不能這樣做,因為每個鍵只能在字典中出現一次:

>>> d={'abc':'movies', 'abc': 'sports', 'abc': 'music', 'xyz': 'music', 'pqr':'music','pqr':'movies', 'pqr':'sports', 'pqr':'news', 'pqr':'sports'}
>>> d
{'pqr': 'sports', 'abc': 'music', 'xyz': 'music'}

您想要的是將list用作值:

>>> d = {'abc': ['movies', 'sports', 'music'], 'xyz': ['music'], 'pqr': ['music', 'movies', 'sports', 'news', 'sports']}
>>> d
{'xyz': ['music'], 'abc': ['movies', 'sports', 'music'], 'pqr': ['music', 'movies', 'sports', 'news', 'sports']}

通過這種表示,您可以輕松完成所需的操作:

>>> for key, value in sorted(d.items()):
...     print key, len(value)   #in python3: print(key, len(value))
... 
abc 3
pqr 5
xyz 1

然后,如果您想為給定鍵添加值,只需執行以下操作:

>>> d['xyz'].append('news')
>>> for key, value in sorted(d.items()):
...     print key, len(value)
... 
abc 3
pqr 5
xyz 2

在這種情況下,通常使用defaultdict代替簡單的dict更好。

Python的字典中不能有重復的鍵:

>>> d = {'abc':'movies', 'abc': 'sports', 'abc': 'music', 'xyz': 'music', 'pqr':'music','pqr':'movies', 'pqr':'sports', 'pqr':'news', 'pqr':'sports'}
>>> print d
{'pqr': 'sports', 'abc': 'music', 'xyz': 'music'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM