Heim  >  Artikel  >  Backend-Entwicklung  >  Programm zum Finden verwandter Zahlen in JSON?

Programm zum Finden verwandter Zahlen in JSON?

PHP中文网
PHP中文网Original
2016-10-17 09:30:12999Durchsuche

Frage

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

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'}

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
    })
 }
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)

Stellungnahme:
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