![](/img/trans.png)
[英]Count distinct values for each column, return a dataframe, and sort values
[英]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.