質問
str={'Tom':'1,2,3','Jack':'1,5,9','Bob':'2','Li':'2,7'}
トムの数字で1が見つかったら、ジャックの5と9をトムに渡してください
トムの数字で2が見つかったら、リーの7をトムに渡してください、ボブは2だけを持っていて、それ以外は持っていません。数字なので彼はそれを与えることができません
トムの数字に 3 が見つかりましたが、ジャック、ボブ、リーは 3 を持っていないので、彼はそれを与えることができません
...
最後に、次の結果が得られました。
str_related={'Tom':'5,9,7','Jack':'2,3','Bob':'1,3,7','Li':'1,3'}
このプログラムを効率的に書くにはどうすればよいでしょうか?ありがとうございます
答え1:はこのように分割できます
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 }) }
パラメータが確かかどうか分からないので、おそらくこのように書いたと思います
後で知りましたが、あなたが望んでいたものはこれは php で書かれ、私のものは js でした。書き方については、アイデアをご覧ください~~~~
答え 2: python3 set
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)
結果:
{'Jack': {2, 3}, 'Tom': {9, 5, 7}, 'Li': {1, 3}, 'Bob': {1, 3, 7}}
最適化~
最初に計算して有効なセットを保存し、不必要な繰り返し計算を避けます。
りー