我有两个问题.我正在尝试编写一个接受命令行参数的脚本,我看到我可以使用以下命令启动脚本:
#!/bin/env python
Run Code Online (Sandbox Code Playgroud)
要么
exec python -x "$0" "$@"
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?
第二个问题是脚本.我有一个像这样的输入数据集:
group_a 5
group_a 7
group_c 6
group_a 8
group_b 8
group_b 4
group_c 7
group_a 8
....
....
Run Code Online (Sandbox Code Playgroud)
如何将所有类似项目组合在一起并总结如下数字:
group_a 28
group_b 12
group_c 13
Run Code Online (Sandbox Code Playgroud)
这应该是两个单独的问题.
1)这两种方式是等价的.shebang只是将程序标记为由Python执行,因此您在运行它时不必指定它.
2)
import collections
groups = collections.defaultdict(int)
for line in data_set:
group, value = line.split()
groups[group] += int(value)
Run Code Online (Sandbox Code Playgroud)
A collections.defaultdict是一个看起来像字典的数据结构,但是如果你查找一个不包含它的值,它会自动使用默认值创建它.因此,这是生成组字典的简洁方式:即时值.