Выберите ключи с одинаковой длиной значения, которое является наибольшим количеством списка в словаре

У меня есть сортировка defaultdict лайк:

k = {'a':[3,4,5] , 'x':[5,4,11] , 'c':[1,3,4] , 'l': [2,3], 'h':[1]}

То, что я хочу, - это получить только ключи с наибольшей или максимальной длиной в значении.

Ожидаемый результат:

{'a':[3,4,5] , 'x':[5,4,11] , 'c':[1,3,4]} or [a,b,c]

Я использовал Numpy, чтобы получить истинные значения в массиве, а затем извлечь его мой код:

z = np.array(arr)     #arr variable has the size of lists i.e arr = [3,3,3,2,1]
    p = len(z[z == z[0]])    #To Check how many highest count is SAME and store the count in p variable
    print(z >= z[0])
    print(list(k)[0:p])

Выход:-

True True True False False

[a,x,c]

Итак, мой вопрос, есть ли способ сделать это без использования NumPy?

1 ответ

Решение

Одним из способов является вычисление максимальной длины, а затем использование словаря понимания.

d = {'a':[3,4,5] , 'x':[5,4,11] , 'c':[1,3,4] , 'l': [2,3], 'h':[1]}

max_len = max(map(len, d.values()))

res = {k: v for k, v in d.items() if len(v) == max_len}

print(res)

{'a': [3, 4, 5], 'x': [5, 4, 11], 'c': [1, 3, 4]}
Другие вопросы по тегам