【发布时间】:2013-02-28 01:31:59
【问题描述】:
我正在尝试创建一个执行以下操作的 python 脚本:
表(dbf 或 csv-我都可以创建)总是只有 4 条记录。第二列(Let)将始终按 a、b、c、d 排序。第 1 列(Num)总是有 0-10 之间的数字,但频率和顺序会有所不同。输出需要按 Num 排序和分组,首先输出最小的数字。如果第一列中的数字出现一次,则只输出对应的字母。如果一个数字出现两次(即两行具有相同的数字),则输出每个对应的字母,并在它们之间加上一个“and”。如果数字出现两次以上,则输出每个字母,它们之间有一个逗号,最后一个字母之前有一个“和”。每个出现的字母组都有自己的输出行。
基本上是对 4 个选项中的 1 个进行排序、分组和输出:
“无数据”
1 个字母本身
2个字母用“and”隔开
3 个字母,用逗号隔开,最后一个字母前加一个“and”。
以下是名为 soils_no.dbf 的表的不同版本及其所需的输出,具体取决于输入。
Num.......让
0........一个
0......b
0.......c
0........d
打印“无数据”
Num.......让
8........一个
8...............b
2.......c
8........d
打印 c
打印 a、b 和 d
Num.......让
4.......一个
1.................b
7.......c
3.......d
打印 b
打印 d
打印一个
打印 c
Num.......让
3.......一个
3.............b
10........c
1........d
打印 d
打印 a 和 b
打印 c
Num.......让
10.......一个
10.......b
10.......c
10........d
打印 a、b、c 和 d
我知道如何循环并放入逗号和“and”,但我不知道如何分组和排序。 使用 python 2.7 执行此操作。
顺便说一句,我正在尝试学习 python,所以请解释一下代码的含义。我学得越多,就越不依赖陌生人的善意。
提前致谢。
【问题讨论】:
标签: sorting python-2.7 group-by