我有一个defaultdict
定义如下:
devicedict1=collections.defaultdict(list)
设备字典包含一个索引键和一个双精度值,如下所示:
{0: ['9085', '9084'], 1: ['9084', '5684'], 2: ['9084', '3707'], 3: ['9084', '3707'], 4: ['3707', '9084'], 5: ['9084', '3707'], 6: ['3707', '9084'], 7: ['9084', '5684'], 8: ['9084', '3707'], 9: ['9084', '3707'], 10: ['9084', '3707'], 11: ['9084', '5684'], 12: ['3707', '9084']
我想提取出现最多的元组(值,值)并打印它们。
我尝试使用Counter和items()。
e=Counter(devicedict1.items())
print(e)
但是它似乎不起作用。它应该给我们以下结果:
['9084', '3707']:30
['9084', '5684']:10
答案 0 :(得分:1)
如果您将componentWillMount() {
if(!this.props.isAuthenticated){
// redirect
this.props.history.push('/login');
}
}
中的值map
用于元组,则可以使用Counter
,因为与列表不同,元组是可哈希的。要获得显示最多的n
元组,请使用most_common
方法:
n = 3
Counter(map(tuple, devicedict1.values())).most_common(n)
# [(('9084', '3707'), 6), (('9084', '5684'), 3), (('3707', '9084'), n)]
答案 1 :(得分:0)
使用Counter
例如:
from collections import Counter
data = {0: ['9085', '9084'], 1: ['9084', '5684'], 2: ['9084', '3707'], 3: ['9084', '3707'], 4: ['3707', '9084'], 5: ['9084', '3707'], 6: ['3707', '9084'], 7: ['9084', '5684'], 8: ['9084', '3707'], 9: ['9084', '3707'], 10: ['9084', '3707'], 11: ['9084', '5684'], 12: ['3707', '9084']}
c = Counter(map(tuple, data.values()))
print(c.most_common(2))
输出:
[(('9084', '3707'), 6), (('9084', '5684'), 3)]