Python - фильтрация словарей с упорядоченными значениями

Опубликовано: 12 Апреля, 2022

Учитывая список словарей, задача состоит в том, чтобы написать программу на Python для фильтрации словарей со значениями в порядке возрастания, т. Е. С сортировкой.

Примеры:

Input : test_list = [{‘gfg’ : 2, ‘is’ : 8, ‘good’ : 10}, {‘gfg’ : 1, ‘for’ : 10, ‘geeks’ : 9}, {‘love’ : 3, ‘gfg’ : 4}] 
Output : [{‘gfg’: 2, ‘is’: 8, ‘good’: 10}, {‘love’: 3, ‘gfg’: 4}] 
Explanation : 2, 8, 10 are in increasing order.
 

Input : test_list = [{‘gfg’ : 2, ‘is’ : 8, ‘good’ : 10}, {‘gfg’ : 1, ‘for’ : 10, ‘geeks’ : 9}, {‘love’ : 4, ‘gfg’ : 3}] 
Output : [{‘gfg’: 2, ‘is’: 8, ‘good’: 10}] 
Explanation : 2, 8, 10 are in increasing order. 

Метод №1: Использование sorted () + values () + понимания списка

In this, we perform task of sorting using sorted() and extract values using values(), list comprehension is used to perform iteration of all the dictionaries.

Python3

# Python3 code to demonstrate working of
# Filter dictionaries with ordered values
# Using sorted() + values() + list comprehension
  
# initializing list
test_list = [{"gfg": 2, "is": 8, "good": 10},
             {"gfg": 1, "for": 10, "geeks": 9},
             {"love": 3, "gfg": 4}]
  
# printing original list
print("The original list is : " + str(test_list))
  
# sorted to check with ordered values
# values() extracting dictionary values
res = [sub for sub in test_list if sorted(
    list(sub.values())) == list(sub.values())]
  
# printing result
print("The filtered Dictionaries : " + str(res))

Выход:

The original list is : [{‘gfg’: 2, ‘is’: 8, ‘good’: 10}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}, {‘love’: 3, ‘gfg’: 4}]
The filtered Dictionaries : [{‘gfg’: 2, ‘is’: 8, ‘good’: 10}, {‘love’: 3, ‘gfg’: 4}]

Метод # 2: использование filter () + lambda + sorted ()

In this, we perform task of filtering using filter(), and lambda function is used to perform task of injecting functionality necessary for checking increasing values.

Python3

# Python3 code to demonstrate working of
# Filter dictionaries with ordered values
# Using filter() + lambda + sorted()
  
# initializing list
test_list = [{"gfg": 2, "is": 8, "good": 10},
             {"gfg": 1, "for": 10, "geeks": 9},
             {"love": 3, "gfg": 4}]
  
# printing original list
print("The original list is : " + str(test_list))
  
# sorted to check with ordered values
# values() extracting dictionary values
# filter() and lambda function used to filter
res = list(filter(lambda sub: sorted(list(sub.values()))
                  == list(sub.values()), test_list))
  
# printing result
print("The filtered Dictionaries : " + str(res))

Выход:

The original list is : [{‘gfg’: 2, ‘is’: 8, ‘good’: 10}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}, {‘love’: 3, ‘gfg’: 4}]
The filtered Dictionaries : [{‘gfg’: 2, ‘is’: 8, ‘good’: 10}, {‘love’: 3, ‘gfg’: 4}]

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.