- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个棋盘游戏排名系统,并且我有一个 .CSV 列表,列出了在棋盘游戏之夜打败其他人的人。打败一个打败了另一个人的人算作胜利。我需要抓取这个 CSV 文件,找到被获胜者击败的人击败的人,然后附加该数据并对其进行排序。
我可以打开、创建、抓取数据并写入文件,但是当我尝试编写各种版本的代码时,我似乎无法完全正确地获得输出。
import csv
import collections
#get the contents of the input.csv file
WINLOSE = {}
with open('input.csv') as f2:
for line in f2:
winners,losers = line.strip().split(',')
WINLOSE[winners] = losers
new_items = set()
RESULTS = collections.namedtuple('RESULTS', ['winners', 'losers'])
#Write to the output file.
with open('output.csv', 'w') as f1:
writer = csv.DictWriter(winners, losers)
#pseudo code -- if any name in the winner cell appears in the
#loser cell,
#copy all of the losers associated with that cell to the people
#who beat that
#cell
if cell.losers = any-cell.winners:
append the losers associated with the winners cell
for row in new_items:
writer.writerow(row._asdict())
输入的 csv 如下所示:
Winners,Losers
John,Amanda
Mark,Eddy
Amanda,Chad
Becky,Michael
Michael,Steve
Eddy,Fred
Michael, Stuart
Edwardo, Patricia
Michael, Buzz
Mark, Charlie
Amanda, Brandon
Brandon, Dirk
输出的 csv 应该是这样的:
Winners,Losers
John,Amanda
John,Chad
John, Brandon
John, Dirk
Mark,Eddy
Mark,Fred
Mark, Charlie
Amanda,Chad
Becky,Michael
Becky,Steve
Michael,Steve
Michael, Stuart
Michael, Buzz
Eddy,Fred
Edwardo, Patricia
Amanda, Brandon
Brandon, Dirk
例如,John 打败了 Amanda,Amanda 打败了 Chad,因此我们需要添加一条 John 打败 Chad 的条目。
最佳答案
您可以构建一个将每个赢家映射到输家列表的字典,遍历字典的键/赢家,使用生成器函数递归地产生赢家的输家并输出结果赢家/输家对:
import csv
def find_losers(winner, results):
for loser in results.get(winner, ()):
yield loser
for child in find_losers(loser, results):
yield child
with open('output.csv', 'w') as f1, open('input.csv') as f2:
reader = csv.reader(f2)
writer = csv.writer(f1)
writer.writerow(next(reader))
results = {}
for winner, loser in reader:
results.setdefault(winner, []).append(loser)
for winner in results:
for loser in find_losers(winner, results):
writer.writerow((winner, loser))
使用您的示例输入,输出文件将包含:
Winners,Losers
John,Amanda
John,Chad
John,Brandon
John,Dirk
Mark,Eddy
Mark,Fred
Mark,Charlie
Amanda,Chad
Amanda,Brandon
Amanda,Dirk
Becky,Michael
Becky,Steve
Becky,Stuart
Becky,Buzz
Michael,Steve
Michael,Stuart
Michael,Buzz
Eddy,Fred
Edwardo,Patricia
Brandon,Dirk
关于python - 游戏排名系统 : Finding the people who beat the people: How do I organize this csv data and append the file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028317/
我已按照此 repo https://github.com/elastic/beats-dashboards 中概述的说明进行操作在本地克隆它并尝试运行脚本以加载仪表板后。然而,我收到了这个作为响应,
我使用 Celery 3.1.23 在 Heroku 上运行 Django 1.9 网站。 RabbitMQ 用作代理。 重启beat worker后,内存占用一直在497Mb左右。这导致频繁出现错误
我最近用 RabbitMQ 和 Celery 配置了一个新服务器。当我尝试在机器上启动 Celerybeat 时,它会启动几秒钟然后停止。我已授予日志文件的正确权限并将所有者更改为应用程序用户。我还检
我对Elastic Stack还是很陌生,从我在这个主题上阅读的内容中,我仍然看不到整个图片。 假设我使用的是最新版本的Filebeat或Metricbeat,然后将该数据推送到Logstash输出(
我遇到了一个奇怪的问题。 我正在创建一个基于位置的网络应用程序,它使用 javascript 函数来获取用户的 GPS 坐标。我有一个带有提交按钮的表单,当单击该提交按钮时,将调用该函数 (oncli
我刚遇到 this 它看起来非常棒,所以我当然去了 右键单击并检查元素 但我看到的只是一堆 script 标签和一个 canvas 标签,上面写着“This game is built for Goo
在我的 Django 项目中,我使用 Celery 和 Rabbitmq 在后台运行任务。 我正在使用 celery beat scheduler 来运行周期性任务。 如何以编程方式检查 celery
我有一个通过 Celery Beat 定期(每分钟)运行的任务。有时,任务完成执行所需的时间会超过一分钟,这会导致调度程序在任务已经运行时将该任务添加到队列中。 如果这些任务已经在运行,有没有办法避免
我一直在广泛搜索,到目前为止我遇到的一切都表明我的配置是正确的......我可以看到我的任务正在我的 celery worker 容器中注册。我没有看到它们在我的节拍容器中注册(但我认为我应该?我应该
为什么我不能运行定期任务? 项目/settings.py REDIS_HOST = 'localhost' REDIS_PORT = '6379' CELERY_BROKER_URL = 'redis
我是 ElasticSearch 精彩世界的新手,所以请放纵一下。 我正在考虑 Microsoft sql 数据源的导入和同步策略,如果我没有误解,我可以使用输入插件 JDBC 或 Beats。 但我
我正在尝试发送带有节拍的多种类型的日志,并在logstash服务器上解析它们。 我已配置好节拍并正常工作,并且几乎使logstash正常工作。 我遇到问题的地方是other-log.log具有以不同格
我在同一台机器上有 Elasticsearh、Logstash 和 Beat/filebeat。 Filebeat 配置为将信息发送到 localhost:5043。Logstash 有一个管道配置监
我正在尝试使用 celery beat 和 docker 为我的 Flask 应用程序运行定期 celery 任务。但是,当我运行容器时,出现以下错误: Removing corrupted sche
我正在为 Beat'em Up 游戏制作我的 2D 引擎(CaSTLe Crashers 就是我所说的 Beat'em Up 或 Brawler 类游戏)。 我将支持 2D Sprite 和 2D 粒
我有一个计划的 celery 每 30 秒运行一次任务。我有一个每天作为任务运行,另一个每周在用户指定的时间和一周中的某一天运行。它检查“开始时间”和“下一个预定日期”。在任务完成之前,下一个计划日期
我正在尝试测试一个简单的 Celery 应用程序。 config.py extract/ celery.py celeryconfig.py tasks.py
我已经安排了 celery beat 每 3 小时运行一次的任务: 'sync_stuff': { 'task': 'celery_tasks.sync_stuff', 'schedu
我知道有一个命令可以让 celeryd 作为守护进程运行,即; celery 分离。但是我怎样才能使用任何命令将 celery-beat 作为守护进程运行呢?请帮助我。 TIA 最佳答案 只要把这个
我目前有一个 celery beat 任务,它会定期计算一些结果。在外部,我可能有 API 调用(以未知频率)来查询此结果。我正在考虑使用“上次运行任务”结果,因此当 API 进行查询时,celery
我是一名优秀的程序员,十分优秀!