小编nat*_*142的帖子

使用列表理解绘制存储在字典列表中的数据

我有一个 netCDF 文件,其中包含可追溯到 1948 年的全球月平均气温。对于作业,我必须选择任何一个提供的数据点,提取其 12 月、1 月、2 月和 3 月的平均温度值,然后显示它。

我已经解压了数据,并将其收集在字典列表中,如下所示:

十二月

decemberMeans = [
    {'year': 1948, 'temp': 271.24}, {'year': 1949, 'temp': 271.28},
    {'year': 1950, 'temp': 268.52}, {'year': 1951, 'temp': 269.63},
    ...,
    {'year': 2015, 'temp': 277.23}, {'year': 2016, 'temp': 271.25}
]
Run Code Online (Sandbox Code Playgroud)

对应于一月、二月和三月的数据以相同的方式构建。

我的下一步是绘制它。我必须为每组数据在同一张图上绘制一条线,我正在使用列表理解来完成它。现在我的绘图代码如下所示:

import matplotlib.pyplot as plt

plt.figure(1)
plt.hold(True)
plt.plot([data['years'] for data in decemberMeans], \
    [data['temp'] for data in decemberMeans], 'k-')
plt.plot([data['years'] for data in januaryMeans], \
    [data['temp'] for data in januaryMeans], 'r-')
plt.plot([data['years'] for data in februaryMeans], …
Run Code Online (Sandbox Code Playgroud)

python plot dictionary list

3
推荐指数
1
解决办法
5745
查看次数

使用 lambda 函数按两个子字符串对字符串列表进行排序

所以我有一个字符串列表,大致如下:

list = ['file.t00Z.wrff02.grib2', 'file.t00Z.wrff03.grib2', 'file.t00Z.wrff00.grib2',
        'file.t00Z.wrff05.grib2', 'file.t00Z.wrff04.grib2', 'file.t00Z.wrff01.grib2', 
        'file.t06Z.wrff01.grib2', 'file.t06Z.wrff00.grib2', 'file.t06Z.wrff02.grib2', ...]
Run Code Online (Sandbox Code Playgroud)

我最近在这里问了一个问题,其中我学习了如何使用 lambda 函数按子字符串对字符串列表进行排序:

list.sort(key=lambda x: x[x.find('wrff'):])

但现在我需要知道是否有一种方法可以按两个不同的子字符串进行排序,就像数据库中的复合主键一样。我想首先按“file.t”后面的两位数字对文件进行排序,然后按“wrff”后面的两位数字对文件进行排序。有没有办法可以同时执行这两个操作?

解决方案:我最终使用了用户 Moses Koledoye 在下面推荐的二元组 lambda 函数排序,但在尝试将此排序过程应用于具有不同命名约定的文件名组时遇到了问题。

在我的脚本中,我有 3 个 Python 对象,它们从唯一的数据目录中抓取文件并形成一个包含文件的列表(如上面的列表)。每个对象抓取具有不同命名约定的文件,并且每个不同的文件组在其名称中具有不同数量的数字组。

为了在不增加复杂性的情况下处理这个问题,我决定使用用户 Jared Gougen 建议的natsort模块,并且效果非常好。

python sorting string lambda

2
推荐指数
1
解决办法
1100
查看次数

强制参数成为有效路径

我正在编写一个简单的脚本,用于解析存储在AWS CloudWatch上的JSON文件的内容.我已经在脚本中添加了一个接受用户输入的参数解析器,并允许用户将文件的输出打印到屏幕上(以预定的方式),或允许他们将内容输出到本地JSON文件.这是一个让我难以理解的片段:

import argparse

parser = argparse.ArgumentParser(description="Process a log file")
parser.add_argument('-o', '--output', choices=[???, 'print'], 
                    default='print', help='Specify logfile output path or print to screen')
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

我的问题源于这parser.add_argument条线,特别是choices论证.我想为这个标志允许两个输入,它们是print本地机器上的一个或一些有效路径.我希望当前标记为问号的选项是Python可以识别的PATH.

有没有办法,使用argparse来指定一个标志的参数之一必须是一个PATH?到目前为止,搜索结果尚无定论.

提前致谢!

python path argparse

0
推荐指数
1
解决办法
78
查看次数

标签 统计

python ×3

argparse ×1

dictionary ×1

lambda ×1

list ×1

path ×1

plot ×1

sorting ×1

string ×1