2016-03-20 9 views
0

Ich habe ein Wörterbuch wie folgt:
d={1:[2,3,4],2:[1,3,4],3:[1,2],4:[1,2,3]}.Manipulation Suche Wörterbuch mit Liste als Wert in Python

Ich muss zum Beispiel tun: In der key 1 habe ich die Liste [2,3,4]. Ich muss die Anzahl der Verbindungen zwischen dem Element der Liste als Wert in allen Schlüsseln zählen.

Also muss ich überprüfen, ob in key 2 dort als Elemente sind 3 oder 4 und auch die key 3 mit dem Element 4.

Diese Untersuchung muss für alle key des Wörterbuchs d fortgesetzt werden.

Am Ende der in allen Schlüsseln gesucht hatte ich gefunden, die Anzahl der Paare zu zählen. Im Beispiel habe ich nur count=2 weil key 2 mit 3 und 4 verbunden ist, aber 3 ist nicht mit 4 verbunden. Wiederholungen sind nicht erforderlich. Also bin ich nicht an dem Paar 4-2 interessiert, wenn ich das Paar 2-4 schon gefunden (und gezählt) hätte. Ich habe versucht, für den ersten Schlüssel zu implementieren:

` 
d={} 
d={1:[2,3,4],2:[1,3,4],3:[1,2],4:[1,2,3]} 
values=[] 
count = 0 
#for key in d: 
values = d[1] 
for value in values: 
    for i in (d[value]): 
     print "i: ",i 
     if i in values: 
      count += 1 
      print " count: ", count 
      print ".........." 

print(count) 
` 

Aber auf diese Weise count=5, weil es auch die umgekehrten Paare zählen. Ich muss etwas spezifizieren, so count wird count=3 sein. Wie kann das gehen?

Antwort

0
d={} 
d={1:[2,3,4],2:[1,3,4],3:[1,2],4:[1,2]} 
print d 
values=[] 
for key in d: 
    count = 0 
    values = d[key] 
    for value in values: 
     for i in (d[value]): 
      if i in values: 
       count += 1 
    print "count: ",count/2, " key: ", key 
Verwandte Themen