1

我只想保留namevalue(键值对)这是列表。

[{u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u'c_user',
  u'path': u'/',
  u'secure': True,
  u'value': u'100001724251788'},
 {u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u'csm',
  u'path': u'/',
  u'secure': False,
  u'value': u'2'},
 {u'domain': u'.facebook.com',
  u'expiry': 1441116441,
  u'name': u'datr',
  u'path': u'/',
  u'secure': False,
  u'value': u'AUojUqoBUYA2wj4j04GT5XvX'},
 {u'domain': u'.facebook.com',
  u'expiry': 1441116442,
  u'name': u'lu',
  u'path': u'/',
  u'secure': False,
  u'value': u'RitwQJMNRJ8siUh_9eIj4SMw'},
 {u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u's',
  u'path': u'/',
  u'secure': True,
  u'value': u'Aa7ebY1RvmeilCX8.BSI0od'},
 {u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u'xs',
  u'path': u'/',
  u'secure': True,
  u'value': u'62%3AjNm_3ySkegf7cg%3A2%3A1378044445%3A10945'},
 {u'domain': u'.facebook.com',
  u'expiry': 1380636479,
  u'name': u'fr',
  u'path': u'/',
  u'secure': False,
  u'value': u'0aU8cfDygWXo1ETQA.AWV9BQIzKARYURFpuxUdXLoXcl8.BSI0od.j_.FIj.AWXjyq2t'},
 {u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u'sub',
  u'path': u'/',
  u'secure': False,
  u'value': u'64'},
 {u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u'p',
  u'path': u'/',
  u'secure': False,
  u'value': u'125'},
 {u'domain': u'.facebook.com',
  u'expiry': None,
  u'name': u'presence',
  u'path': u'/',
  u'secure': True,
  u'value': u'EM378046939EuserFA21B01724251788A2EstateFDsb2F0Et2F_5b_5dElm2FnullEuct2F1378043847BEtrFnullEtwF2448105081EatF1378046499377G378046939504CEchFDp_5f1B01724251788F13CC'}]
[Dbg]>>> type(cookies)
<type 'list'>
[Dbg]>>> newlist = [{'domain': i['domain'], 'name': i['name'], 'value': i['value']} for i in cookies]
[Dbg]>>> newlist
[{'domain': u'.facebook.com', 'name': u'c_user', 'value': u'100001724251788'},
 {'domain': u'.facebook.com', 'name': u'csm', 'value': u'2'},
 {'domain': u'.facebook.com',
  'name': u'datr',
  'value': u'AUojUqoBUYA2wj4j04GT5XvX'},
 {'domain': u'.facebook.com',
  'name': u'lu',
  'value': u'RitwQJMNRJ8siUh_9eIj4SMw'},
 {'domain': u'.facebook.com',
  'name': u's',
  'value': u'Aa7ebY1RvmeilCX8.BSI0od'},
 {'domain': u'.facebook.com',
  'name': u'xs',
  'value': u'62%3AjNm_3ySkegf7cg%3A2%3A1378044445%3A10945'},
 {'domain': u'.facebook.com',
  'name': u'fr',
  'value': u'0aU8cfDygWXo1ETQA.AWV9BQIzKARYURFpuxUdXLoXcl8.BSI0od.j_.FIj.AWXjyq2t'},
 {'domain': u'.facebook.com', 'name': u'sub', 'value': u'64'},
 {'domain': u'.facebook.com', 'name': u'p', 'value': u'125'},
 {'domain': u'.facebook.com',
  'name': u'presence',
  'value': u'EM378046939EuserFA21B01724251788A2EstateFDsb2F0Et2F_5b_5dElm2FnullEuct2F1378043847BEtrFnullEtwF2448105081EatF1378046499377G378046939504CEchFDp_5f1B01724251788F13CC'}]

至:

    <Cookie>.facebook.com:datr:gyenULkNKjCIJFTYDz2qbp9I
    <Cookie>.facebook.com:c_user:120004707330532
    <Cookie>.facebook.com:fr:0LglznOeWFepXcvAF.AWVm9awu51UtdvT65f9HqxYXUsI.BQp4ej._Q.AAA.AWW8GKGl
    <Cookie>.facebook.com:lu:gg1dq7zzNjC6pd7W9W0SFHnA
    <Cookie>.facebook.com:s:Aa5Zmp1zeLF36x3s
    <Cookie>.facebook.com:xs:1%3AWvWR_uXSzC3p3w%3A0%3A1374938392
    <Cookie>
4

2 回答 2

5

要从字典列表中提取任意名称,您可以使用operator.itemgetter()

from operator import itemgetter

names = ["name", "value"] # fields to extract
values = itemgetter(*names) # function that extracts values from an input dict

result = [dict(zip(names, values(d))) for d in list_of_dicts]
print(result)

输出

[{'name': u'c_user', 'value': u'100001456251788'},
 {'name': u'csm', 'value': u'2'},
 {'name': u'datr', 'value': u'AUojdfkBUYA2wj4j04GT5XvX'}]
于 2013-09-01T15:20:28.070 回答
3

您可以使用所谓的“列表理解”来挑选出您想要的键/值对:

new_list = [{'name':x['name'], 'value':x['value']} for x in list]

一点额外的解释:这样做是遍历 中的条目list,将每个分配给x,然后将该值应用到前面的表达式中,在这种情况下

{'name':x['name'], 'value':x['value']}

这可以是一种从更全面的列表中剔除您想要的元素或创建一个新列表的快速方法,您可以使用简单表达式从现有列表的元素中定义该列表。

[]也可以通过用大括号替换外部方括号来制作新字典{}

另外:如果您正在制作新列表以提供给循环,并且您的原始数据集非常大,您可以制作一个“生成器”,它类似于您可以循环但不存储的列表内存中的新数据子集。制作生成器用括号替换方[]括号()

new_generator = ({'name':x['name'], 'value':x['value']} for x in list)
for element in new_generator:
    ... do whatever ...

这避免了在内存中复制大量数据,并且仅在循环进行时计算每个元素。

于 2013-09-01T15:06:15.990 回答