Try to find the list with fewer items

advertisements

I'm quite new with Python and programming in general. My problem concerns the operations through which I could find the list with the fewest elements in a dictionary. To be clear I have a dictionary with about ten keys, and each key is a list with a lot of elements. I need to iterate over the list with the fewest elements. To find it I tried to define a function that do this work:

def minlist(*lists):
smallest = min(len(lists))
if len(lists) == smallest:
    return lists

But the response was TypeError: 'int' object is not iterable. How can I manage that, taking in mind that in principle I don't know the numbers of keys? Here a sample of my dictionary (as required)

{97: [1007928679693166, 1007928798219684, 1007928814680980, 1007928891466688, 1007928897515544, 1007928997487142], 98: [1007928837651593, 1007928889730933], 99: [1007928797944536, 1007928805518205, 1007928870847877, 1007929012532919, 1007929030905896, 1007929097107140], 688: [1007928628309796, 1007928724910684, 1007928808626541, 1007928866265101, 1007928908312998, 1007928982161920, 1007929013746703, 1007929055652413], 734: [1007928687611100, 1007928923969018, 1007928933749030, 1007928942892766, 1007929021773704], 1764: [1007928765771998, 1007928917743164], 1765: [1007928894040229, 1007929021413611], 1773: [1007929003959617]}


Here is a solution using a intermediate list of tuples for easy sort/access:

input_dict = {1: [1,2,3,4], 2: [2,3,4], 3:[1,2,3]}
#Get key/length(list) type tuples
helper = [(key, len(input_dict[key])) for key in input_dict.keys()]
#Sort list by the second element of the tuple(the length of the list)
helper.sort(key=lambda x: x[1])

#Now the first position hold the key to the shortest list from the dicitonary and the length
print input_dict[helper[0][0]]