Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python剥离元组列表?_Python_List_Dictionary_Flags - Fatal编程技术网

如何使用python剥离元组列表?

如何使用python剥离元组列表?,python,list,dictionary,flags,Python,List,Dictionary,Flags,我有一个数组,每个案例都有一些标志。 为了使用HTML打印数组并使用colspan,我需要转换以下内容: [{'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}

我有一个数组,每个案例都有一些标志。 为了使用HTML打印数组并使用colspan,我需要转换以下内容:

[{'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': True, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': True}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}, {'serve': False, 'open': False}]
在此情况下,打开标志:

[{'colspan': 12, 'open': False}, {'colspan': 60, 'open': True}, {'colspan': 24, 'open': False}]
另一个用来生成发球

如何使用Python以最智能的方式实现这一点

我可以一个一个地数这个案子,但这不是个好主意

def cluster(dicts, key):
    current_value = None
    current_span = 0
    result = []

    for d in dicts:
        value = d[key]
        if current_value is None:
            current_value = value
        elif current_value != value:
            result.append({'colspan': current_span, key: current_value})
            current_value = value
            current_span = 0
        current_span += 1

    result.append({'colspan': current_span, key: current_value})
    return result

by_open = cluster(data, 'open')
by_serve = cluster(data, 'serve')
第二个版本,灵感来自Denis的答案和他对itertools.groupby的使用:

第二个版本,灵感来自Denis的答案和他对itertools.groupby的使用:


这并不清楚您需要什么,但我希望以下示例将帮助您:

>>> groupped = itertools.groupby(your_list, operator.itemgetter('open'))
>>> [{'colspan': len(list(group)), 'open': open} for open, group in groupped]
[{'colspan': 12, 'open': False}, {'colspan': 60, 'open': True}, {'colspan': 78, 'open': False}]
>>> groupped = itertools.groupby(your_list)
>>> [dict(d, colspan=len(list(group))) for d, group in groupped]
[{'serve': False, 'open': False, 'colspan': 12}, {'serve': True, 'open': True, 'colspan': 52}, {'serve': False, 'open': True, 'colspan': 8}, {'serve': False, 'open': False, 'colspan': 78}]

这并不清楚您需要什么,但我希望以下示例将帮助您:

>>> groupped = itertools.groupby(your_list, operator.itemgetter('open'))
>>> [{'colspan': len(list(group)), 'open': open} for open, group in groupped]
[{'colspan': 12, 'open': False}, {'colspan': 60, 'open': True}, {'colspan': 78, 'open': False}]
>>> groupped = itertools.groupby(your_list)
>>> [dict(d, colspan=len(list(group))) for d, group in groupped]
[{'serve': False, 'open': False, 'colspan': 12}, {'serve': True, 'open': True, 'colspan': 52}, {'serve': False, 'open': True, 'colspan': 8}, {'serve': False, 'open': False, 'colspan': 78}]

你的问题很不清楚。此外,这些colspan值非常奇怪。这个colspan值用于这个简单的示例。colspan值是具有相同标志的连续案例数。您的问题相当不清楚。此外,这些colspan值非常奇怪。这个colspan值用于这个简单的示例。colspan值是具有相同标志的连续事例数。colspan应每次重新启动。这个函数给了我[{'colspan':12,'open':False},{'colspan':72,'open':True},{'colspan':96,'open':False}]我的代码中有一行缺失,几分钟前我纠正了它,当前的_span=0。它现在应该像预期的那样工作。请原谅我的问题,但你知道如何编程,对吗?我的意思是,代码只是一个让您开始的示例,而不是生产就绪的代码。如果您理解代码在做什么,那么发现您描述的错误应该非常容易!是的,我自己也修好了:colspan每次都应该重新启动。这个函数给了我[{'colspan':12,'open':False},{'colspan':72,'open':True},{'colspan':96,'open':False}]我的代码中有一行缺失,几分钟前我纠正了它,当前的_span=0。它现在应该像预期的那样工作。请原谅我的问题,但你知道如何编程,对吗?我的意思是,代码只是一个让您开始的示例,而不是生产就绪的代码。如果您理解代码在做什么,那么发现您描述的错误应该非常容易!是的,我自己也修复了它:我不知道为什么最后一个colspan没有预期的值。好的,我知道我知道。。。我的样本是150箱而不是96箱。。。当你知道如何使用Python时,它是如此强大。谢谢。包括+1个电池!使用itertools.groupby是一个不错的选择!如果我想为所有组保留一个我知道相同的信息,我该怎么办?例如:[{'colspan':12,'open':False},{'colspan':60,'open':True,'schedule_id':1},{'colspan':78,'open':False}]我不知道为什么最后一个colspan没有预期的值。好的,知道我知道。。。我的样本是150箱而不是96箱。。。当你知道如何使用Python时,它是如此强大。谢谢。包括+1个电池!使用itertools.groupby是一个不错的选择!如果我想为所有组保留一个我知道相同的信息,我该怎么办?例如:[{'colspan':12,'open':False},{'colspan':60,'open':True,'schedule_id':1},{'colspan':78,'open':False}]