В настоящее время у меня есть такое выражение, которое отлично работает:
if (l['key'] != "0") and (l['key'] != "") and (l['key'] != 'm3u8') and ('HIT' not in k['key']) :
im new, чтобы перечислить понимание, поэтому вместо добавления (l ['key']! = "something") каждый раз, когда я хочу исключить расширение, я пытался это сделать:
ext_group=["",'m3u8','0']
url_strings =['m3u8','test1','0','gif','potato']
if any(ext not in url_strings for ext in ext_group):
но это не работает. обычно в цикле я могу просто сказать "print ext", но в этом случае будет ошибкой сказать, что я не определил его. Если я попытаюсь распечатать url_strings, он распечатает полный список, а не только те элементы, которые не были отфильтрованы.
Что я сделал здесь неправильно или чего не понимаю?
EDIT попытался сделать это, но также не фильтровал, не фильтруя, я имею в виду, что я все еще вижу значения "", "m3u8", "0", напечатанные l ['key']
for ext in ext_group:
if (l['key']!= ext) and ('HIT' not in k['key']) :
print l['key']
По моему мнению, вы пытаетесь отфильтровать объект JSON из ключей, если это значение находится вокруг ['','m3u8','0']
и другого объекта JSON, который имеет значение для "ключа" в качестве списка и списка не должен иметь 'HIT'
как элемент.
То, что вы пробовали в своем понимании списка, почти правильно, но была ошибка в понимании понимания списка.
Рассмотрим приведенный ниже код:
ext_group=["",'m3u8','0']
url_strings =['m3u8','test1','0','gif','potato']
proper_values = []
for ext in url_strings:
if ext not in ext_group:
proper_values.append(ext)
Это то, что вы намерены делать в списке понимания, но вы включили в списки, который должен повторяться в for loop
и должны быть проверены на, if
условия.
Вместо
if any(ext not in url_strings for ext in ext_group)
вы должны были пойти с
if any ([ext for ext in url_strings if ext not in ext_group])
Вы также можете добавить свое второе условие в ту же проверку. Что-то вроде,
if any([i for i in url_strings if i not in ext_group]) and ('HIT' not in k['key']):
Надеюсь, у вас есть то, что вы искали. Else опубликуйте свои вопросы в качестве комментариев.
ext
, который соответствует, вы не можете использоватьany
для этого. Смыслany
том, что вы выбрасываете всю информацию, кроме того, было ли какое-либо совпадение. Если вы не хотите , чтобы сделать это, напишите , что вы хотите. Например,(ext for ext in ext_group if ext not in url_strings)
дает вам итерируемое из всех совпадений, а не просто, было ли оно или нет. И если вы поставите это в квадратных скобках вместо паренов, вы получите список всех совпадений.ext
находится только внутриany()
который возвращает Bool. При текущей настройке он вернетtrue
если одна или несколько строк вext_group
отсутствуют вurl_strings
. Это то, что вы намерены?