2017-10-05 46 views
-2

我有以下列表和字典:一小段路映射列表到另一個

[u'customer_id', u'bank_statement', u'pay_stub'] 

REQUEST_DOCUMENT_TYPE_CHOICES = (
    ('void_cheque',   _('Void Cheque')), 
    ('pay_stub',   _('Pay Stub')), 
    ('bank_statement',  _('Bank Statement (31 days)')), 
    ('bank_statement_60', _('Bank Statement (60 days)')), 
    ('csst_statement',  _('CSST Statement')), 
    ('saaq_statement',  _('SAAQ Statement')), 
    ('cara_statement',  _('CARA Statement')), 
    ('insurance_letter', _('Insurance Letter')), 
    ('t4',     _('T4')), 
    ('welfare_chart',  _('Welfare Chart')), 
    ('raqp_chart',   _('RAQP Chart')), 
    ('customer_id',   _('Customer ID')), 
    ('proof_of_residence', _('Proof Of Residence')), 
    ('bankruptcy_proof', _('Bankruptcy Proof')), 
    ('consumer_proposal', _('Consumer Proposal')), 
    ('signed_contract',  _('Signed Contract')), 
) 

我已經知道我可以在這種方式來訪問每個元素

list = dict(Meta.REQUEST_DOCUMENT_TYPE_CHOICES) 
list['void_cheque'] 

這個問題的目的是把第一個列表轉換成

['Void Cheque', 'Bank Statement (31 days)', 'Pay Stub'] 

如何用一個簡短的線將第一個列表映射到使用該詞典的最後一個列表中?我知道我可以用簡單的for說法做了,但我想它以這樣一種方式,我可以返回它在函數內部一行代碼下... return your_code

+0

什麼是'Meta'?這是'Django'嗎?如果是這樣,請添加標籤。第二個列表不是一個列表,如果用'()'封閉,而是'tuple'的'tuple'。你問的是如何讓map的'dict'值到第一個列表元素字符串? – pstatix

+0

時間複雜性的效率?你有沒有嘗試過映射字典? – Carcigenicate

+0

@pstatix我不會告訴你我的'Meta'類,因爲它在這裏沒有關係。是的,它是Django。 –

回答

2

不是1襯爲初始化,但你可以用一個簡單的列表理解得到它:

things = [u'customer_id', u'bank_statement', u'pay_stub'] 

types = dict(Meta.REQUEST_DOCUMENT_TYPE_CHOICES) # dont use `list` as variable name 

new_things = [types[thing] for thing in things if thing in types] 
+0

@ J.Doe您需要遍歷代碼,並在調用時查看類的數據上的'dict()'方法的返回值。答案就在那裏。你要求列表元素的映射; @丹尼爾和我都爲你提供。 – pstatix

2

您可以使用map

choices = [u'customer_id', u'bank_statement', u'pay_stub'] 
choices = list(map(dict(Meta.REQUEST_DOCUMENT_TYPE_CHOICES).get, choices)) 
+0

我得到了'[]'。我怎麼能把''改成'Void cheque'? –

+0

很乾淨。與列表理解相似[如圖所示](https://stackoverflow.com/questions/1247486/python-list-comprehension-vs-map)。儘管如此,我會說它不是_pythontic_。 – pstatix

+0

@ J.Doe這將取決於你的'Meta'如何允許其'REQUEST_DOCUMENT_TYPE_CHOICES'內置到'dict()'調用中。所以,看起來你的班級似乎是相關的。有了適當的'dict'對象,代碼就可以工作。 – pstatix

相關問題