我有一个字典dict1['a'] = [ [1,2], [3,4] ]
,需要生成一个列表l1 = [2, 4]
。也就是说,每个内部列表的第二个元素中的列表。它可以是单独的列表,甚至字典也可以修改为dict1['a'] = [2,4]
。
答案 0 :(得分:8)
给出一个清单:
>>> 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()
作为列表从字典中返回(键,值)对。因此,此代码将提取字典中的每个键,并将其与上面生成的列表配对。
答案 1 :(得分:2)
假设字典中的每个值都是对的列表,那么这应该为你做:
[pair[1] for pairlist in dict1.values() for pair in pairlist]
如你所见:
dict1.values()
可以获得你的词典中的值,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爱你!
答案 2 :(得分:0)
第二个元素中的列表 每个内部列表
听起来像[sl[1] for sl in dict1['a']]
- 所以问题是什么?! - )