나는 파이썬에서 anagram 프로그램에 대한 사전을 가지고 일하고있다. 키는 정렬 된 문자의 튜플, 그리고 값은 그 편지와 함께 가능한 단어의 배열 인 : 나는 아래 목록을 필터링 할 정규식을 사용하고파이썬에서리스트의 사전을 좁히기
wordlist = {
('d', 'g', 'o'): ['dog', 'god'],
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat', 'tas'],
}
.
filtered_list = {
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat'],
}
지금까지 내가 두 단계로 내려 왔 : 그래서 최종 결과가 있어야한다 필터로 r't$'
을 부여.
tmp = {k: [w for w in v if re.search(r't$', w)] for k, v in wordlist.items()}
이 빈리스트로 날 나뭇잎 :
: 다음{
('d', 'g', 'o'): [],
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat'],
}
내가 두 번째 패스가 빈 목록을 제거 할 필요가 첫째, 표현식과 일치하는 모든 단어를 유지
filtered_list = {k: v for k, v in tmp.items() if v}
나는 이것을 한 단계에서 할 수있는 방법이있을 것이라고 확신하지만, 아직 이해하지 못했습니다. 그들을 결합하는 방법이 있습니까? 또는 일반적으로 이것을하는 더 나은 방법?
안녕하세요. 이것은 훌륭한 첫 번째 질문입니다. – shx2
감사합니다. 내가 직접 모든 연구를했는지 확인하려고 노력했다. 저는 20 년 동안의 Perl 녀석이고, 저의 머리를 감싸고있는 이상한 파이썬 관용구가 있습니다. – phraktyl