मुझे एक मूल्य का उपयोग कर मानचित्र से एक कुंजी निकालना है। क्या रिवर्स लुकअप को लागू करने के अलावा इसे करने का कोई तरीका है?मानचित्र में रिवर्स लुकअप
उत्तर
प्रयास करें
(some #(if (= (val %) your-val) (key %)) your-map)
आप एक 2-लाइन समारोह के साथ वास्तव में आसानी से एक नक्शा पलट सकता है:
(defn reverse-map [m]
(into {} (map (fn [[a b]] [b a]) m)))
(def a {:a 1 :b 2 :c 3})
(reverse-map a)
=> {1 :a, 3 :c, 2 :b}
((reverse-map a) 1)
=> :a
नोट: सभी गहन उद्देश्यों के लिए, मानचित्र '{: a 1: b 1}' क्या बनता है अनिर्धारित है। – Jeremy
@ जेरेमी: यह सख्ती से अपरिभाषित नहीं है, आपको विश्वसनीय रूप से '{1: a}' या '{1: b}' (जो आपको मिलता है वह हैशपैप के आंतरिक क्रम पर निर्भर करता है) का रिवर्स लुकअप प्राप्त करेगा। लेकिन मैं मानता हूं कि यदि आपके पास डुप्लिकेट मान हैं, तो शायद आप इसे कुछ विशेष उपचार देना चाहते हैं। – mikera
हाँ। मेरा मतलब था कि इस पर भरोसा नहीं किया जाना चाहिए। इसके अलावा, PersistentArrayMaps के छोटे मानचित्र * अनुमानित * (जरूरी नहीं) व्यवहार कर सकते हैं जब तक कि वे एक PersistentHashMap में शामिल नहीं हो जाते हैं। लेकिन फिर, यह ऐसा कुछ नहीं है जिस पर भरोसा किया जाना चाहिए। – Jeremy
एक और एक:
(defn reverse-map [m]
(apply hash-map (mapcat reverse m)))
(defn reverse-lookup [m k]
(ffirst (filter (comp #{k} second) m)))
मुझे लगता है कि map-invert
सही है ऐसा करने का तरीका।
;; Despite being in clojure.set, this has nothing to do with sets.
user=> (map-invert {:a 1, :b 2})
{2 :b, 1 :a}
;; If there are duplicate keys, one is chosen:
user=> (map-invert {:a 1, :b 1})
{1 :b}
;; I suspect it'd be unwise to depend on which key survives the clash.
आप ClojureScript उपयोग कर रहे हैं या आप एक और विकल्प :)
(zipmap (vals m) (keys m))
आप कुंजी रखना चाहते हैं की जरूरत है, यह बेहतर है बस नक्शे को उलटने के लिए , लेकिन एक सेट/सूची आदि में पुरानी चाबियाँ इकट्ठा करें ...
(defn map-inverse [m]
(reduce (fn [m' [k v]] (update m' v clojure.set/union #{k})) {} m))
(defn map-inverse [m]
(reduce (fn [m' [k v]] (update m' v conj k)) {} m))
- 1. रिवर्स सी ++ लुकअप
- 2. रिवर्स हैश लुकअप क्वेरी
- 3. विदेशी के द्वारा Django रिवर्स लुकअप
- 4. आईफोन पर रिवर्स-जियोकोड लुकअप की सीमा क्या है?
- 5. Django: prefetch_related() रिवर्स रिलेशनशिप लुकअप का पालन करता है?
- 6. रिवर्स में लिंक्ड हैश मानचित्र को कैसे पार करें?
- 7. जावास्क्रिप्ट getElementById लुकअप - हैश मानचित्र या रिकर्सिव पेड़ ट्रैवर्सल?
- 8. जावा में रेंज लुकअप
- 9. उसी मानचित्र पर केएमएल, पता लुकअप, दिशानिर्देश और 'साझा करें मानचित्र' का उपयोग करें
- 10. Google मानचित्र मार्कर हटाने के लिए रिवर्स एनीमेशन?
- 11. ग्रोवी रिवर्स मैप कुंजियां
- 12. रिवर्स
- 13. रिवर्स
- 14. स्ट्रिंग में पाइथन रिवर्स
- 15. Chromebook में रिवर्स स्क्रॉलिंग
- 16. os.walk() रिवर्स में?
- 17. रूबी में डीएनएस रिवर्स?
- 18. मानचित्र में मानचित्र
- 19. लुकअप टेबल
- 20. गुवा में मानचित्र में मानचित्र
- 21. सी # लुकअप
- 22. सी ++ टेम्पलेट्स में नाम लुकअप
- 23. ग्लासफ़िश में जेएनडीआई कॉन्फ़िगरेशन/लुकअप
- 24. लुकअप तालिका
- 25. डेल्फी - रिवर्स लुकअप 'जिसमें इस इकाई को शामिल किया गया है'
- 26. जावा के एसएसएल रिवर्स डीएनएस लुकअप को अक्षम करने के लिए कैसे करें
- 27. लुकअप यूआरआई
- 28. मैटलैब - साजिश में अक्ष के मान रिवर्स
- 29. तारों में सी में वैल्यू लुकअप टेबल?
- 30. रिवर्स एक स्ट्रिंग में खोजें
मैं क्या एफ 2 या अधिक कुंजियों का एक ही मूल्य है? क्या आपको उनमें से केवल एक या उन सभी की आवश्यकता है? – ivant