Wpis z mikrobloga

Mireczki uczę się Pythona i potrzebuje porady.
Otóż mam listę, której każdy element to słownik. Np. [{ szer : 15, dl: 18}]. Dostaje input z zewnątrz który jest ciągiem znaków i wygląda tak: "szer > 4 nad dl > 5". Czy da się jakoś łatwo przy użyciu eval (lub nie) przefiltrowac te liste i zwrócić wyniki ?
#python #kiciochpyta
  • 10
  • Odpowiedz
@JareQ: To chcesz w wyniku dostać listę słowników w formacie [{ szer : 15, dl: 18}] z ciągu znaków czy z listy słowników otrzymać ciągi znaków w formacie "szer > 4 nad dl > 5" ?
  • Odpowiedz
@JareQ: jak rozumiem wejście to warunek logiczny do spełnienia (czyli np. szer > 4 and dl > 5) więc jeśli pasuje Ci eval to by to było coś w stylu:

list_of_param_dicts = [{ 'szer' : 15, 'dl': 18}]
input = 'szer > 4 and dl > 5'
filtered = [param_dict for param_dict in list_of_param_dicts if (lambda szer, dl: eval(input))(**param_dict)]
  • Odpowiedz