python - 唯一的从到组合,在可变循环中它之后的所有持续时间

标签 python bash algorithm sorting csv

我在从用 BASH 或 Python 循环中的唯一值压缩的日志文件中获取信息时遇到问题。

我有一个巨大的日志文件,我对其进行了 grep 以查找特定国家/地区的信息,以仅获取 csv 中唯一的“从街道、城市”和“到街道、城市”和旅行持续时间格式。

同样计算往返于同一条街道和相同持续时间的同一条街道,但显示为 1 个条目和点击次数。

我还设法对它们进行排序,使其首先在同一个“从街道”上排序,然后在“到街道”上排序。

但我想要的是相同的从街道到街道,以及之后的所有不同持续时间。

输入 CSV:

 from-street,from-city,destination-street,destination-city,duration
 Street1,City1,Street2,City2,30min
 Street1,City1,Street2,City2,10min
 Street1,City1,Street2,City2,15min
 Street1,City1,Street3,City3,28min
 Street1,City1,Street3,City3,20min
 Street1,City1,Street3,City3,5min
 Street2,City2,Street4,City4,12min

需要循环的输出变量:

$from-street,$from-city,$destination-street,$destination-city,$duration1,$duration2,$duration3
Street1,City1,Street2,City2,30min,10min,15min
Street1,City1,Street3,City3,28min,20min,5min
Street2,City2,Street4,City4,12min

我希望有人能帮我解决这个问题,因为我做了第一个扩展的 grep 命令并将唯一值放在 csv 格式中,所以我坚持下一部分,如上所述。

也许 Bash 是首选方式,因为您可以在 1 个流畅的脚本中的循环之前直接使用 grep。但我也在努力学习 Python,所以也很受欢迎。

谢谢大家

最佳答案

在 Python 中,您可以创建 Street1, City1, Street2, City2tuple 作为 dict< 的键 对象并使用 collections.defaultdict附加值。

当您读取您的csv 文件时,您将获得如下列表:

my_csv = [ ['Street1', 'City1','Street2','City2','30min'],
           ['Street1', 'City1','Street2','City2','10min'],
           ['Street1', 'City1','Street3','City3','28min']]

然后您以所需格式存储值的代码将是:

from collections import defaultdict

my_dict = defaultdict(list)

for item in my_csv:
    my_dict[tuple(item[:4])].append(item[4])

my_dict 持有的最终值将是:

{
     ('Street1', 'City1', 'Street2', 'City2'): ['30min', '10min'], 
     ('Street1', 'City1', 'Street3', 'City3'): ['28min']
}

注意:字典本质上是无序的。因此,您将失去该行的出现顺序。

关于python - 唯一的从到组合,在可变循环中它之后的所有持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622794/

相关文章:

bash - Jenkins - 无法运行程序 "docker"

linux - 即使报告捕获了数百万个数据包,Tcpdump 保存的文件也是空的

bash - 如何让 fish shell 像 bash 一样删除单词

python - 广度优先搜索Python程序错误: Key Error 3

algorithm - 比较而不将不相关的 block 分组

python - matplotlib 中没有填充的图像网格

python - 匹配两个字典中的键,并使用匹配的键和两个关联值创建新字典

python - 比较两个文件在 python 中的差异

c++ - 找出将景观淹没到一定体积所需的水高

python - 反转字符串中的单词 - 相同顺序 - 包括空格