小编phi*_*kis的帖子

在堆栈中获取函数的__file__一级

我发现我经常使用这种模式:

os.path.join(os.path.dirname(__file__), file_path)
Run Code Online (Sandbox Code Playgroud)

所以我决定在一个包含许多这样小工具的文件中放入一个函数:

def filepath_in_cwd(file_path): 
    return os.path.join(os.path.dirname(__file__), file_path)
Run Code Online (Sandbox Code Playgroud)

问题是,__file__返回当前文件,因此返回当前文件夹,我错过了重点.我可以做这个丑陋的黑客(或者只是按原样编写模式):

def filepath_in_cwd(py_file_name, file_path): 
    return os.path.join(os.path.dirname(py_file_name), file_path)
Run Code Online (Sandbox Code Playgroud)

然后对它的调用将如下所示:

filepath_in_cwd(__file__, "my_file.txt")
Run Code Online (Sandbox Code Playgroud)

但是我更喜欢它,如果我有办法获得__file__堆栈中一级的功能.有没有办法做到这一点?

python stack filepath

8
推荐指数
1
解决办法
923
查看次数

python - 哪个数据结构用作dicts数组?

我需要构建一个像这样的数据结构:

{
    key: {k: v for k in range(fixed_small_number)}
    for key in range(fixed_large_number)
}
Run Code Online (Sandbox Code Playgroud)

问题是我正在以"不拘一格"的方式构建它,每次获得一个项目随机k放入一个随机密钥,即我需要随机访问,我需要内部字典是可变的.

所以我的问题分为两个:

  1. 外部字典的推荐类型.

  2. 内部字典的推荐类型.

对我来说,"最好的"解决方案是一系列可变的命名元组,只有这个不存在.

我可以使用一个namedtuples列表,然后使用新数据重新创建每个,但这听起来非常浪费,列表不是随机访问高效的,并且所有重写都是相同的数据.

我不知道有一些神奇的新结构吗?

编辑:用法示例:

for key, k, v in [('a', 1, 2), ('b', 1, 3), ('a', 2, 1), ('a', 3, 1), ('b', 3, 1) ...]:
    my_structre[key][k] = v
Run Code Online (Sandbox Code Playgroud)

EDIT2:

事实证明,列表实际上支持随机访问

python arrays list namedtuple

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

标签 统计

python ×2

arrays ×1

filepath ×1

list ×1

namedtuple ×1

stack ×1