Programm zum Finden verwandter Zahlen in JSON?

PHP中文网
Freigeben: 2016-10-17 09:30:12
Original
1007 Leute haben es durchsucht

Frage

str={'Tom':'1,2,3','Jack':'1,5,9','Bob':'2','Li':'2,7'}
Nach dem Login kopieren

Wenn Sie 1 in Toms Nummer finden, müssen Sie Jacks 5 und 9 dort
geben ist eine 2 in Toms Nummer, also muss er Lis 7 geben. Tom hat nur eine 2, und es gibt keine andere Nummer, also kann er sie nicht geben.
Es wird festgestellt, dass es eine 3 gibt Toms Nummer, und weder Jack noch Bob noch Li haben sie. Ich kann sie nicht nennen Sie wissen nicht, ob die Beschreibung klar ist?
Reale Situation: Es gibt viele Leute, mindestens 10.000, und die Zahl beträgt mindestens 100.00
Wie schreibe ich dieses Programm effizient? Vielen Dank

str_related={'Tom':'5,9,7','Jack':'2,3','Bob':'1,3,7','Li':'1,3'}
Nach dem Login kopieren

Antwort 1:

kann so aufgeteilt werden weil ich nicht weiß, ob Ihre Parameter sind korrekt. Also habe ich es so geschrieben

Später habe ich herausgefunden, dass das, was Sie wollen, in PHP geschrieben ist >

const objLast = {}
const tempTom = []
const tom = str['Tom'].solit(',')
tom.map((item, i)=> {
  for(let key in str) {
     if(key != 'Tom') {
        tempTom.concact(getLastOfArr(str[key].split(','), item))
     }
  }
})
objLast.Tom = tempTom.join()
 function getLastOfArr(arr, removeKey) {
   return arr.filter((item, index) => {
        item != removeKey
    })
 }
Nach dem Login kopieren
Antwort 2:

Python3-Set

Ergebnis:

Optimierung~

Berechnen Sie es zuerst und speichern Sie den gültigen Satz, um unnötige Doppelzählungen zu vermeiden.
data = {'Tom':{1,2,3},'Jack':{1,5,9},'Bob':{2},'Li':{2,7}}
rslt = {}
for k in data:
    s=set()
    for x in data:
        if k!=x:
            s |= data[k]&data[x] and data[x]-data[k]
    rslt[k] = s
print(rslt)
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage