首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试按部分处理列表

尝试按部分处理列表
EN

Stack Overflow用户
提问于 2012-12-05 12:49:47
回答 2查看 46关注 0票数 0

我有一个列表列表,按列表的第二个值(组)排序。我现在需要遍历它,以便一次处理每个“组”。数据是[name, group, data1, data2, data3, data4].的,我不确定我是需要while循环还是其他循环,或者是groupby,但我从来没有用过。任何帮助都将不胜感激。

代码语言:javascript
复制
for i in range (int(max_group)):
    x1 = []
    x2 = []
    x3 = []
    x4 = []
    if data[i][1] == i+1:
        x1.append(data[2])
        x2.append(data[3])
        x3.append(data[4])
        x4.append(data[5])
        print x1
        print 'next' # these are just to test where we're at

所有的x应该包含所有组1信息的所有第3-5列数据(在名称和组号之后)。然后,我可以使用组1信息并转到组2。

EN

回答 2

Stack Overflow用户

发布于 2012-12-05 13:01:05

代码语言:javascript
复制
for i in sorted(set(group[1] for group in data)):
    x1, x2, x3, x4 = zip(*(group[2:] for group in data if group[1] == i))

注意:这个解决方案效率很低,我会马上带来一个更有效的解决方案!

代码语言:javascript
复制
groups = {}
for d in data:
    try:
        groups[d[1]].append(d[2:])
    except AttributeError:
        groups[d[1]] = d[2:]

for i in sorted(j for j in groups):
    x1, x2, x3, x4 = zip(*groups[i])

这只是稍微不那么难看,但应该可以工作。

票数 1
EN

Stack Overflow用户

发布于 2012-12-05 13:05:40

假设列表中的列表是

代码语言:javascript
复制
mylist = [[name],[add],[data1],[data2]]

要遍历list中的每个列表,您应该尝试以下代码:

代码语言:javascript
复制
for each_list in mylist:
    if isinstance(each_list,list):
         #do something with that list inside list

如果此答案与您的问题不匹配,很抱歉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13716515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档