Tôi có một dict đa chiều, và tôi muốn có thể lấy một giá trị bằng một khóa: cặp khóa và trả về 'NA' nếu khóa đầu tiên không tồn tại . Tất cả các sub-dicts đều có cùng khóa.Python dict.get() với dict đa chiều
d = { 'a': {'j':1,'k':2},
'b': {'j':2,'k':3},
'd': {'j':1,'k':3}
}
Tôi biết tôi có thể sử dụng d.get('c','NA')
để có được những phụ dict nếu nó tồn tại và trở lại 'NA' khác, nhưng tôi thực sự chỉ cần một giá trị từ các tiểu dict. Tôi muốn làm một cái gì đó như d.get('c['j']','NA')
nếu có.
Hiện tại, tôi chỉ kiểm tra xem khóa cấp cao nhất có tồn tại không và sau đó gán giá trị phụ cho biến nếu nó tồn tại hoặc 'NA' nếu không. Tuy nhiên, tôi đang làm điều này khoảng 500k lần và cũng lấy/tạo ra thông tin khác về mỗi khóa cấp cao nhất từ nơi khác, và tôi đang cố gắng tăng tốc độ này lên một chút.
nhìn vào 'collections.defaultdict' cho việc thực hiện đã được cung cấp, ví dụ:' defaultdict (lambda: defaultdict (lambda: 'NA')) ' – mtadd
Chắc chắn, nhưng bạn vẫn cần một' NADict' và một hàm trả về một cá thể chia sẻ của nó. Tôi sẽ thêm một ví dụ. –
@mtadd: ý tưởng là không tạo ra một dict mới/defaultdict trên mọi lần tra cứu. –