Tôi đang làm việc với từ điển cho một chương trình đảo chữ cái trong Python. Các khóa là các bộ chữ được sắp xếp và các giá trị là các mảng của các từ có thể có với các chữ cái đó:Gọt xuống từ điển các danh sách bằng Python
wordlist = {
('d', 'g', 'o'): ['dog', 'god'],
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat', 'tas'],
}
Tôi đang sử dụng regex để lọc danh sách. Vì vậy, cho r't$'
như một bộ lọc kết quả cuối cùng nên là:
filtered_list = {
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat'],
}
Cho đến nay tôi đã nhận được nó xuống để hai bước. Thứ nhất, giữ cho tất cả các từ phù hợp với các biểu hiện:
tmp = {k: [w for w in v if re.search(r't$', w)] for k, v in wordlist.items()}
này khiến tôi với danh sách rỗng:
{
('d', 'g', 'o'): [],
('a', 'c', 't'): ['act', 'cat'],
('a', 's', 't'): ['sat'],
}
Sau đó, tôi cần một đường chuyền thứ hai để thoát khỏi danh sách rỗng:
filtered_list = {k: v for k, v in tmp.items() if v}
Tôi chắc chắn có một cách để thực hiện các bước này, nhưng tôi vẫn chưa tìm ra. Có cách nào để kết hợp chúng không? Hoặc một cách tốt hơn để làm điều này nói chung?
Chào mừng bạn đến với SO. Đây là một câu hỏi tuyệt vời đầu tiên. – shx2
Cảm ơn! Tôi đã cố gắng để đảm bảo rằng tôi đã làm tất cả các nghiên cứu của tôi trước khi bàn tay. Tôi là một anh chàng Perl hai mươi tuổi, và có một số thành ngữ Python kỳ lạ mà tôi vẫn đang cố gắng quấn quanh đầu mình. – phraktyl