I have a defaultdict
defined as follows:
devicedict1=collections.defaultdict(list)
The device dict contains an index key, and double values as follows:
{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']
I want to extract the tuples (value, value) that appear the most, and print them.
I've tried using Counter and items().
e=Counter(devicedict1.items())
print(e)
but it doesn't seem to work. It should give us the following results:
['9084', '3707']:30
['9084', '5684']:10
You can use Counter
if you map
the values in the dictionary to tuples, given that unlike lists, tuples are hashable. To get the n
tuples that appear the most there is the most_common
method:
n = 3
Counter(map(tuple, devicedict1.values())).most_common(n)
# [(('9084', '3707'), 6), (('9084', '5684'), 3), (('3707', '9084'), n)]