繁体   English   中英

列表理解中的Python 3无效语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM