【问题标题】:how to get value from a list of tuples and make a new list如何从元组列表中获取值并创建一个新列表
【发布时间】:2013-12-11 13:03:48
【问题描述】:

我有以下几点:

[('first_name', u'Renier'), ('second_name', u''), ('surname', u'de Bruyn'), ('own_transport', u'True'), ('id_number', u'910920254081'), ('id_type', u'IDNumber'), ('id_nationality', u'ZA'), ('disabilities_list', u'Intellectual Disability'), ('disabilities_list', u'Memory Loss'), ('disabilities_list', u'Mental Illness'), ('disabilities_list', u'Physical Disability'), ('disabilities_list', u'Speech and Language Disorders'),...]

我将如何获取这些元组的值并在有值 disabilities_list 的情况下使用来创建一个新列表?

我试过了:

 for k in arr:
        if k == "disabilities_list":
            print k # this only returns "disabilities_list" 5 times

更新:

arr 是从表单返回的内容,这是我在print arr 时得到的内容:

NestedMultiDict([('first_name', u'Renier'), ('second_name', u''), ('surname', u'de Bruyn'), ('race', u'Caucation'), ('own_transport', u'True'), ('id_number', u'9109205021082'), ('id_type', u'IDNumber'), ('id_nationality', u'ZA'), ('disabitity', u'True'), ('disabilities_list[]', u'Memory Loss'), ('disabilities_list[]', u'Mental Illness'), ('disabilities_list[]', u'Physical Disability'), ('disabilities_list[]', u'Speech and Language Disorders'), ('disabilities_list[]', u'Vision Loss and Blindness'), ('mobile_number', u'0828245092'), ('home_number', u'0317016554'), ('email', u'renierdbruyn@hotmail.com'), ('other_contact', u''), ('line1', u'2 Hamilton Road'), ('line2', u''), ('line3', u''), ('city_town', u'Durban'), ('province', u'GP'), ('postal_code', u'3610'), ('suburb', u'Ashley'), ('country', u'ZA'), ('notice_period', u'4 weeks'), ('for_position', u'Developer'), ('curr_renumeration', u'12.0'), ('expect_renumeration', u'123.0'), ('relocate', u'True')])

【问题讨论】:

  • 你能告诉我们arr对象是什么吗?
  • 看我的答案更新

标签: python list tuples


【解决方案1】:

使用list comprehantion

>>>arr = [('first_name', u'Renier'), ('second_name', u''), ('surname', u'de Bruyn'), ('own_transport', u'True'), ('id_number', u'910920254081'), ('id_type', u'IDNumber'), ('id_nationality', u'ZA'), ('disabilities_list', u'Intellectual Disability'), ('disabilities_list', u'Memory Loss'), ('disabilities_list', u'Mental Illness'), ('disabilities_list', u'Physical Disability'), ('disabilities_list', u'Speech and Language Disorders'),...]
>>>
>>>[k[1] for k in arr if k[0] == "disabilities_list[]"] 
[u'Intellectual Disability', u'Memory Loss', ...]

edit:已更新,根据更新后的问题:

>>>[item[1] for item in arr.items() if item[0] == "disabilities_list"]  #  will do, what you want

【讨论】:

  • 当我打印出来时,这会返回一个空列表[]
  • 应该不会,我自己查过了。
  • 我在 arr 上运行了 type(),它返回的是:<class 'webob.multidict.NestedMultiDict'>。这就是它不适合我的原因吗?
  • 仍然返回空列表:/
  • 因为您将 [] 添加到“disabilities_list”->“disabilities_list[]”。更新了答案。
【解决方案2】:
if k[0] == "disabilities_list":

【讨论】:

    【解决方案3】:

    也许这就是你想要的:

    >>> for k,v in arr.iteritems():
    ...     if k == 'disabilities_list':
    ...         print v
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多