2015-09-17 7 views
10

में चाबियाँ बदलें मैं एक शब्दकोशएक शब्दकोश

event_types={"as":0,"ah":0,"es":0,"eh":0,"os":0,"oh":0,"cs":0,"ch":0} 

मैं कैसे के बीच में एक जगह के साथ horse, e द्वारा append, s द्वारा a की जगह ले सकता see, h द्वारा exp से की है। जैसे

आउटपुट कुछ:

{"append see":0,"append horse":0,"exp horse":0....} 
+0

क्या आप अपनी प्रविष्टियों को हटा नहीं सकते हैं और यदि आपकी सूची बहुत छोटी है तो नए को फिर से बनाएं? – Julien

+1

@ जुलिएनबेर्नू इससे बड़ा है। –

उत्तर

15

अपने प्रतिस्थापन के साथ एक और शब्दकोश, इस

keys = {"a": "append", "h": "horse", "e": "exp", "s": "see"} 

की तरह अब, अगर आपके घटनाओं इस

event_types = {"as": 0, "ah": 0, "es": 0, "eh": 0} 

की तरह लग रहे, बस शब्दकोश समझ के साथ इसे फिर से संगठित है, इस

>>> {" ".join([keys[char] for char in k]): v for k, v in event_types.items()} 
{'exp see': 0, 'exp horse': 0, 'append see': 0, 'append horse': 0} 
की तरह

यहां, " ".join([keys[char] for char in k]),में वर्णों को पुन: सक्रिय करता है, keys शब्दकोश से संबंधित शब्द प्राप्त करता है और एक सूची बनाता है। फिर, वांछित कुंजी प्राप्त करने के लिए, सूची के तत्व अंतरिक्ष चरित्र से जुड़े हुए हैं।

+0

सूची समझ की कोई आवश्यकता नहीं है: '" ".join ([कुंजी] [char] char में k के लिए]] '->' ""। Join (कुंजी [char] char in k के लिए) ' – warvariuc

+0

@warvariuc शामिल है आम तौर पर जेन एक्सप के साथ धीमा। यही कारण है कि मैं सूची समझ हमेशा – thefourtheye

+0

पसंद करता हूं यह समाधान मानता है कि सभी पुरानी कुंजियों को प्रतिस्थापित किया जाना चाहिए, न केवल दो लेटर्ड वेरिएंट। बस इसे ध्यान में रखते हुए ओपी ने इसके बारे में कुछ भी नहीं कहा है – holroy

3

दोहराएं कुंजी और मूल शब्दकोश के मूल्यों पर, कुंजी को बदलने तो तब्दील कुंजी का उपयोग कर परिणाम शब्दकोश में मूल्य की दुकान। कुंजी को बदलने के लिए, मैपिंग डिक्शनरी ({ "a" : "append", ... }) में देखकर प्रतिस्थापित करें, इसके रिक्त स्थान पर जाएं, फिर रिक्त स्थान के साथ जुड़ें।

2

सुनिश्चित नहीं हैं कि संलग्न है, तो कर सकते हैं या नहीं, लेकिन आप के बाद एक लाइनर कर सकते हैं:

>>> dict={} 
>>> dict={"a":"b"} 
>>> dict["aha"]=dict.pop("a") 
>>> dict 
{'aha': 'b'} 

आप कुंजी पार और उन्हें अपनी जरूरत के अनुसार बदल सकते हैं।

3

सबसे पहले शब्द के लिए एकल पत्र मैप करने के लिए एक मानचित्रण शब्दकोश बनाने के लिए:

mm={"a":"append", "s":"see","h":"horse","e":"exp","c":"corn","o":"ocelot"} 

तो कुंजी, मूल्य tuples की एक सूची के लिए अपने इनपुट शब्दकोश बदलना, मानचित्रण dict का उपयोग कर कुंजी को फिर से लिखने और एक नई सूची बनाने नई कुंजी, मूल मूल्य से युक्त tuples के अंत में, आखिरकार tuples की सूची एक ताना में बदल जाते हैं।

dict(map(lambda e: ("%s %s" % (mm[e[0][0]], mm[e[0][1]]), e[1]), event_types.items())) 
संबंधित मुद्दे