2012-10-10 46 views
9
d = { 
    "local": { 
     "count": 1, 
     "health-beauty": { 
      "count": 1, 
      "tanning": {"count": 1} 
     } 
    }, 
    "nationwide": {"count": 9.0}, 
    "travel": {"count": 0} 
}  

Trong trường hợp này "nationwide" là lớn nhất.Tìm Max trong Từ điển Lồng nhau

Mã là dưới đây để làm cho nó dễ dàng hơn để đính kèm vào các kịch bản:

d = {'travel': {'count': 0}, 'local': {'count': 1, 'health-beauty': {'count': 1, 'tanning': {'count': 1}}}, 'nationwide': {'count': 9.0}} 
+0

Được nhìn vào 'max in (d, key = lambda x: x [1]) ' – AlexZ

+1

bạn nên làm cho địa phương.tiếp tục lớn nhất ... vì nó không phải là câu trả lời sẽ tìm thấy nó ... –

+0

Nếu" thuộc da "là 10, và bạn cần phải nắm bắt điều đó, bạn có thể cần phải làm phẳng từ điển. Hãy thử một cái gì đó như thế này [http://stackoverflow.com/questions/6027558/flatten-nested-python-dictionaries-compressing-keys](http://stackoverflow.com/questions/6027558/flatten-nested-python-dictionaries- phím nén) –

Trả lời

10
>>> max(d, key=lambda x: d[x]['count']) 
'nationwide' 
+1

Truyền thuyết! Đã gần như có cảm ơn cho điều này – AlexZ

+2

điều này sẽ không làm việc .. nói nếu dict nội bộ của bạn là lớn nhất (vì nó thậm chí không xem xét các từ điển lồng nhau) –

+1

Joran: đếm được tăng lên cho mỗi con ... – AlexZ

1

này nên làm việc cho từ điển lồng nhau:

def find_max(d, name=None): 
    return max((v, name) if k == "count" else find_max(v, k) for k, v in d.items()) 

>>> find_max(d) 
(9.0, 'nationwide') 
+1

mà không làm việc Tôi không nghĩ rằng ... địa phương có một số lượng quan trọng và nhiều mục mà mỗi người có số ... –

+0

@JoranBeasley cố định – defuz

+0

:) ... –

Các vấn đề liên quan