Python 嵌套列表中的列表理解
我有一个类似于Python 嵌套列表中的列表理解,python,list-comprehension,nested-lists,Python,List Comprehension,Nested Lists,我有一个类似于[[“foo”、[“a”、“b”、“c”]]、[“bar”、[“a”、“b”、“f”]]的列表 我想把它分开,这样我就可以计算出As、Bs等的总数。但是我对Python还不太熟悉,有点时间 我正在使用[lx for lx in[li[1]for li in fieldlist if li[1]]]尝试获取一个包含子列表中所有项目的列表,但它返回一个包含第一个子列表的列表([[“a”、“b”、“c”],[“a”、“b”、“f”]]而不是包含这些子列表内容的列表。我很确定我只是想错了,
[[“foo”、[“a”、“b”、“c”]]、[“bar”、[“a”、“b”、“f”]]的列表
我想把它分开,这样我就可以计算出As、Bs等的总数。但是我对Python还不太熟悉,有点时间
我正在使用[lx for lx in[li[1]for li in fieldlist if li[1]]]
尝试获取一个包含子列表中所有项目的列表,但它返回一个包含第一个子列表的列表([[“a”、“b”、“c”],[“a”、“b”、“f”]]
而不是包含这些子列表内容的列表。我很确定我只是想错了,因为我不熟悉列表理解和Python
有人有好办法吗?(是的,我知道我选择的名字(lx,li)很可怕)
谢谢。这将为您提供您想要的列表:
[lx for li in fieldlist for lx in li[1] if li[1]]
列表理解:
>>> s = [["foo", ["a", "b", "c"]], ["bar", ["a", "b", "f"]]]
>>> [x for y, z in s for x in z]
['a', 'b', 'c', 'a', 'b', 'f']
>>>
如果li[1]
,你的的目的是什么?如果li[1]
是一个空列表或其他容器,测试是多余的。否则,你应该编辑你的问题来解释它可能是什么。Pythonic解决方案类似于:
>>> from collections import Counter
>>> Counter(v for (field, values) in fieldlist
... for v in values)
Counter({'a': 2, 'b': 2, 'c': 1, 'f': 1})
太棒了。我知道我必须靠得很近,但我没意识到你可以像那样浏览多个列表。谢谢!这是我打印列表时留下的,我想跳过空列表。我不知道这是多余的。