2010-11-08 12 views
7

आप शब्दकोश के सभी तत्वों को कैसे हटाते हैं जिनकी कुंजी किसी सूची का तत्व है?शब्दकोश के सभी तत्वों को हटाएं जिनकी कुंजी एक सूची का तत्व है

+8

इस होमवर्क है? क्या आप हमें दिखा सकते हैं कि अब तक आपके पास क्या है? – SingleNegationElimination

उत्तर

-1

मुझे पायथन के बारे में कुछ नहीं पता, लेकिन मुझे लगता है कि आप एक सूची को पार कर सकते हैं और शब्दकोश से कुंजी द्वारा प्रविष्टियों को हटा सकते हैं?

11

[नोट: यह प्रत्यक्ष उत्तर नहीं है लेकिन पहले अनुमान लगाया गया है कि प्रश्न होमवर्क जैसा दिखता है। मैं मदद कि समस्या को हल करने में मदद करेगा, जबकि यह से]

सीखने आपकी समस्या को जो है घुलना देना चाहते थे:

  1. कैसे एक सूची में से एक तत्व प्राप्त करने के लिए
  2. कैसे एक प्रमुख को हटाने के लिए : शब्दकोश में मूल्य

इसके अलावा मदद:

पायथन पर एक सूची के सभी तत्व कैसे प्राप्त करें?

सभी अनुक्रमों और सूची पर लूप कार्यों के लिए एक अनुक्रम है।

for key in sequence: print key 

आप शब्दकोश में एक तत्व नष्ट कैसे करूँ?

डेल (कुंजी) विधि का उपयोग करें।

आप दो कार्यों गठबंधन करने के लिए सक्षम होना चाहिए।

+3

आपने इस सवाल का जवाब नहीं दिया।आपने उसे सही दिशा में इंगित किया हो सकता है, लेकिन काम पर कुछ जल्दी करने की कोशिश करते समय हर कोई ज्ञान की तलाश में नहीं जाना चाहता। – Will

+3

@ विल: मैं समझता हूं। मैं इस सवाल का जवाब देने वाले शुरुआती व्यक्ति में से एक था। और वार्तालाप से, ऐसा लगता है कि यह एक होमवर्क समस्या थी। स्टैक ओवरफ्लो पर, हम प्रश्न का उत्तर देने में असफल रहते हैं जब तक कि कुछ प्रयास नहीं दिखाए जाते हैं। मैंने सोचा, मैंने एक अच्छी दिशा प्रदान की है जो कट एन पेस्ट समाधान प्रदान करने के बजाय उसे अच्छी स्थिति में रखेगी। मुझे उम्मीद है कि संदर्भ मदद करता है। – pyfunc

7
map(dictionary.__delitem__, lst) 
+2

केवल उपयोगी अगर सभी lst शब्दकोश में है - अन्यथा आपको रास्ते में कहीं भी एक KeyError मिल जाएगा। आज़माएं: 'नक्शा (शब्दकोश .__ delitem__, फ़िल्टर (शब्दकोश .__ में__, lst))' (हालांकि सच में, मैं 'मानचित्र' का उपयोग करने का एक बड़ा प्रशंसक नहीं हूं या लूप के लिए सामान्य के लिए स्टैंड-इन्स के रूप में सूची comps नहीं हूं।) – PaulMcG

+0

@ पॉल: मेरा मानना ​​है कि gnibbler ने जवाब को कम या ज्यादा सही के रूप में अभी तक होमवर्क के लिए अनुचित माना है ... :) – tzot

+0

हां, मैंने खुद को अन्य होमवर्क-वाई प्रश्नों पर भी किया है। – PaulMcG

10
for key in list_: 
    if key in dict_: 
     del dict_[key] 
+0

अच्छा, मुझे नहीं पता था कि आप यह कर सकते हैं। सोचा था कि आपको has_key का उपयोग करना था। धन्यवाद! बीटीडब्ल्यू, डेल dict_ [के] शायद डेल dict_ [कुंजी] होना चाहिए, है ना? – si28719e

+4

@blackkettle: पायथन 3 में 'dict_' में कुंजी वास्तव में यह जांचने का एकमात्र तरीका है कि किसी निर्देश के पास कुछ दी गई कुंजी है -' has_key() 'विधि को छोड़ दिया गया है। –

+0

@blackkettle Yup! ओह – rossipedia

1
newdict = dict(
    (key, value) 
    for key, value in olddict.iteritems() 
    if key not in set(list_of_keys) 
) 

बाद में (2012 के अंत में की तरह):

keys = set(list_of_keys) 
newdict = dict(
    (key, value) 
    for key, value in olddict.iteritems() 
    if key not in keys 
) 

या आप एक 2.7+ अजगर शब्दकोश समझ का उपयोग करते हैं:

keys = set(list_of_keys) 
newdict = { 
    key: value 
    for key, value in olddict.iteritems() 
    if key not in keys 
} 

या हो सकता है यहां तक ​​कि एक अजगर 2.7 शब्दकोश समझ प्लस कुंजी पर एक सेट चौराहे:

required_keys = set(olddict.keys()) - set(list_of_keys) 
return {key: olddict[key] for key in required_keys} 

ओह, हाँ, समस्या अच्छी तरह से हो सकता है कि मैं शर्त आवश्यक चाबियाँ की गणना के लिए उलट था।

+0

आपको लूप –

1
d = {'one':1, 'two':2, 'three':3, 'four':4} 
l = ['zero', 'two', 'four', 'five'] 
for k in frozenset(l) & frozenset(d): 
    del d[k] 
-1
for i in lst: 
    if i in d.keys(): 
     del(d[i]) 
+0

के बाहर 'set (list_of_keys)' को स्थानांतरित करना चाहिए, यह प्रत्येक चरण पर 'd.keys()' के लिए एक सूची या पुनरावर्तक बनाएगा। आपको केवल 'अगर मैं डी में' करने की ज़रूरत है, तो यह करने का यह छोटा और अधिक कुशल तरीका होगा, और इस तरह का जवाब पहले से ही है। –

संबंधित मुद्दे