【发布时间】:2010-11-24 12:49:54
【问题描述】:
我有一本字典 dict1['a'] = [ [1,2], [3,4] ],需要从中生成一个列表作为 l1 = [2, 4]。即每个内部列表的第二个元素的列表。可以是单独的列表,甚至可以将字典修改为dict1['a'] = [2,4]。
【问题讨论】:
标签: python-3.x python
我有一本字典 dict1['a'] = [ [1,2], [3,4] ],需要从中生成一个列表作为 l1 = [2, 4]。即每个内部列表的第二个元素的列表。可以是单独的列表,甚至可以将字典修改为dict1['a'] = [2,4]。
【问题讨论】:
标签: python-3.x python
给定一个列表:
>>> lst = [ [1,2], [3,4] ]
您可以通过简单的列表推导提取每个子列表的第二个元素:
>>> [x[1] for x in lst]
[2, 4]
如果您想对字典中的每个值都执行此操作,您可以遍历字典。我不确定您希望最终数据是什么样子,但这样的事情可能会有所帮助:
>>> dict1 = {}
>>> dict1['a'] = [ [1,2], [3,4] ]
>>> [(k, [x[1] for x in v]) for k, v in dict1.items()]
[('a', [2, 4])]
dict.items() 从字典中以列表形式返回 (key, value) 对。因此,此代码将提取字典中的每个键并将其与如上生成的列表配对。
【讨论】:
第二个元素的列表 每个内部列表
听起来像[sl[1] for sl in dict1['a']]——那么问题是什么?!-)
【讨论】:
假设字典中的每个值都是一对列表,那么这应该为你做:
[pair[1] for pairlist in dict1.values() for pair in pairlist]
如你所见:
dict1.values() 只为您获取 dict 中的值,for pairlist in dict1.values() 为您提供所有配对列表,for pair in pairlist 为您提供每个列表中的所有配对,pair[1] 为您获取每对中的第二个值。试试看。 Python shell 是你的朋友!...
>>> dict1 = {}
>>> dict1['a'] = [[1,2], [3,4]]
>>> dict1['b'] = [[5, 6], [42, 69], [220, 284]]
>>>
>>> dict1.values()
[[[1, 2], [3, 4]], [[5, 6], [42, 69], [220, 284]]]
>>>
>>> [pairlist for pairlist in dict1.values()]
[[[1, 2], [3, 4]], [[5, 6], [42, 69], [220, 284]]]
>>> # No real difference here, but we can refer to each list now.
>>>
>>> [pair for pairlist in dict1.values() for pair in pairlist]
[[1, 2], [3, 4], [5, 6], [42, 69], [220, 284]]
>>>
>>> # Finally...
>>> [pair[1] for pairlist in dict1.values() for pair in pairlist]
[2, 4, 6, 69, 284]
我会说:ipython爱你!
【讨论】: