2013-12-12 6 views
8

की अतिरिक्त सूची के साथ तो मैं tuples के इस सरणी है:अजगर टपल Dict करने के लिए, कुंजी

[(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)] 

और मैं क्षेत्र नामों की यह सूची है:

['id', 'date', 'hour', 'minute', 'interval'] 

मैं करना चाहते हैं, में

[{ 
    'id': u'030944', 
    'date': u'20091123', 
    'hour': 10, 
    'min': 30, 
    'interval': 0, 
},{ 
    'id': u'030944', 
    'date': u'20100226', 
    'hour': 10, 
    'min': 15, 
    'interval': 0, 
}] 
+0

और तुम क्या करने की कोशिश की है? –

+0

@LutzHorn अब तक कुछ भी नहीं है, लेकिन इस बिंदु पर हमले की मेरी एकमात्र योजना सूची के माध्यम से लूप करना है, सूची के सभी तत्वों को 5 अलग-अलग चरों में खींचें, फिर उन 5 चर को एक टोकन में जोड़ें और नई सूची में दबाएं। तो मैं वास्तव में चाबियों की सूची का उपयोग नहीं करूँगा। हालांकि यह विधि मेरे लिए बहुत बोझिल लगती है, इसलिए मैंने सोचा कि एक क्लीनर तरीका होना चाहिए। – DanH

उत्तर

22
data = [(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)] 
fields = ['id', 'date', 'hour', 'minute', 'interval'] 
dicts = [dict(zip(fields, d)) for d in data] 
: एक यदि संभव हो तो भी स्वूप, एक dict को tuples की सूची कन्वर्ट करने के लिए गिर गया

व्याख्या करने के लिए, zip एक या अधिक अनुक्रम लेता है, और प्रत्येक इनपुट अनुक्रम, दूसरा, आदि के पहले तत्व के साथ tuples का अनुक्रम देता है। dict कन्स्ट्रक्टर कुंजी/मान tuples का अनुक्रम लेता है और एक शब्दकोश ऑब्जेक्ट बनाता है। तो इस मामले में, हम डेटा सूची के माध्यम से पुनरावृत्ति करते हैं, कुंजी की प्रत्येक सूची को कुंजी की निश्चित सूची के साथ जोड़ते हैं, और कुंजी/मूल्य जोड़े की परिणामी सूची से एक शब्दकोश बनाते हैं।

+0

लघु और मीठा, और एक अच्छी सूची समझ का उपयोग करता है। – henrebotha

+0

ओह ठंडा, ज़िप() मेरे लिए नया है, धन्यवाद :) – DanH

2
import json 

ts = [(u'030944', u'20091123', 10, 30, 0), (u'030944', u'20100226', 10, 15, 0)] 
fs = ['id', 'date', 'hour', 'minute', 'interval'] 
us = [] 

for t in ts: 
    us.append(dict(zip(fs, t))) 

print(json.dumps(us)) 

परिणाम:

[ 
    { 
     "date": "20091123", 
     "interval": 0, 
     "minute": 30, 
     "id": "030944", 
     "hour": 10 
    }, 
    { 
     "date": "20100226", 
     "interval": 0, 
     "minute": 15, 
     "id": "030944", 
     "hour": 10 
    } 
] 
संबंधित मुद्दे