如何使用python剥离元组列表?
我有一个数组,每个案例都有一些标志。 为了使用HTML打印数组并使用colspan,我需要转换以下内容:如何使用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}
[{'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}]