[英]Python 3 invalid syntax in list comprehension
我正在处理体育比赛中的大量数据,我想看看每个团队出现在数据中的频率。 我想最后给出一个元组列表,其中包含一个团队编号及其频率计数。 我已经编写了以下代码:
from matplotlib import pyplot as plt
import numpy as np
fo = open("Data.txt", "r")
content = [x[:-2] for x in fo.readlines()]
data = []
for i in range(1, len(content)):
data.append(content[i].split(","))
teamList = []
for l in data:
print(l)
teamList.append((l[1],1)) if not len[item for item in teamList if l[1] in item] > 0 else teamList = map(lambda a : (l[1], a[1]+1) if l[1] in a else a, teamList)
print(teamList)
运行代码时,我被告知倒数第二行中的for语法不正确。 如何解决此错误?
如果要计算团队提及,请使用collections.Counter
。
如果l
是可迭代的,而组名是第一个元素(而您不关心其余元素),则它应该像collections.Counter(item[1] for item in data)
一样简单。
如果您确实关心其余部分(就您的代码而言, l[2]
等),则可能是以下内容:
teams = collections.defaultdict({"seen": 0})
for item in data:
name = item[1]
seen = teams[name]["seen"]
teams[name]["seen"] += 1
if seen < 1:
teams[name]["something_else"] = item[2]
而且,如果您不需要计数,则用于set
数据类型”的常用工具是“我已经知道了”。 只需一个基本set(l[1] for l in data)
就可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.