2016-06-28 7 views
0

hinzufügen, so ein Wörterbuch zu betrachten.Um alle Werte eines bestimmten Unterschlüssels für ein Wörterbuch Python

{ 
"b0:47:bf:af:c1:42": 
{ 
"No. of visits": 10, "cities": 
    { 
     "Mumbai": {"count": 5,"last_visited": "5/22/2016"}, 
     "Kolkata": {"count": 2,"last_visited": "5/22/2016"}, 
     "Amritsar":{"count": 3,"last_visited": "5/22/2016"} 
    } 
}, 
"c0:ee:fb:71:be:0d": 
{ 
"No. of visits": 24, "cities": 
    { 
     "Mumbai": {"count": 2,"last_visited": "5/22/2016"}, 
     "Kolkata": {"count": 20,"last_visited": "5/22/2016"}, 
     "Amritsar":{"count": 2,"last_visited": "5/22/2016"} 
    } 
    } 
} 

so was ich will, ist alles für die ganze "cities" meine Ausgabe als "No. of visits" den gleichen Wert haben die "count" zusammenzufassen, natürlich die Frage bitte ich nicht speziell für diesen Zusammenhang. Ich benutze Python2.7

Nun ich wurde iterieren, um einige Werte zu erhalten, wenn ich erkannte, dass ich Wert von ohne es verwenden müssen (es könnte nicht für jeden Schlüssel da sein).

for mac in dic_data: 

cities = dic_data[mac]['cities'] 
most_visited = max(cities, key=lambda x: cities[x]['count']) 

so versuchte ich nur zu wissen, wie kann ich Summe von „count“ aller „Städte“ bekommen jede mac.I will nur sum_of_count = sum(something here) die Ausgabe als Summe der Zählung 10 für den ersten Schlüssel und 24 für die zweite gibt Schlüssel.

+1

Ich verstehe nicht, was Sie fragen. Sie sagen "meine Ausgabe wird den gleichen Wert haben wie" "Nein. von Besuchen "' "aber warum sollte man dann die Zählungen zusammenzählen? Warum nicht einfach "Nein von Besuchen" verwenden? Was genau ist Ihre beabsichtigte Ausgabe für das Beispielwörterbuch, das Sie angezeigt haben? – Blckknght

+0

Möchten Sie eine Gesamtsumme oder eine Summe für jede ID finden? – zondo

+0

Was hast du in Betracht gezogen, bevor du es hier veröffentlichst? Welchen Code hast du ausprobiert? –

Antwort

1

Sie könnten nur durch jede MAC-Adresse sum() die count s durchlaufen dann finden Sie die max(). Angenommen, Ihre Daten in der Variablen data gespeichert ist, hier ist die eine Aussage Version:

max([sum([data[visit]["cities"][city]["count"] for city in data[visit]["cities"]]) for visit in data]) 

Hier ist die for-Schleife Version mit Kommentaren:

# This list will store all the total no. of visits of each mac address 
counts = [] 
for mac in data: 
    # This variable will keep track of the number of visits in the current mac address 
    visits = 0 
    for city in data[mac]["cities"]: 
     visits += data[mac]["cities"][city]["count"] 
    counts.append(visits) 
# Get the highest number of visits 
print max(counts) 
+0

Dank für Ihre Antwort :), das war es, was ich nicht wollte eine weitere Schleife, aber ich denke, das ist der einzige Weg. –

+0

@ranadan Die Mindestanzahl von Loops, die Sie haben können, ist zwei. Eine für jede MAC-Adresse und eine für jede Stadt, um die Zählung zu "summieren". –

+0

ja, danke für die Erklärung. Wie ist die andere Antwort verschwunden? P.S. Ich bin neu auf dieser Seite. –

Verwandte Themen