【问题标题】:Find a key in a python dictionary and return its parents在 python 字典中找到一个键并返回它的父母
【发布时间】:2013-10-06 21:19:26
【问题描述】:

我有一个包含文件夹列表的嵌套字典,比如下面这个2013_09_10 是根文件夹:

{'2013_09_10': {'master.tex': None, 'master.log': None, 'master.pdf': None, 'Makefile': None, 'pieces': {'rastin.tex': None, '02 Human Information Processing.txt': None, 'p1.tex': None, 'p3.tex': None, '03 Models and Metaphors.txt': None, 'p2.tex': None}, 'master.aux': None, 'front_matter.tex': None}}

我想要完成的是,给定文件名(例如 p1.tex),打印文件的实际路径

2013_09_10/pieces/p1.tex

我已经创建了这段代码,但它只给了我所有文件的名称,而不是它的父键(目录):

def get_files(directory):
    for filename in directory.keys():
        if not isinstance(directory[filename], dict):
            print filename
        else:
            get_files(directory[filename])

输出:

master.tex
master.log
master.pdf
Makefile
rastin.tex
02 Human Information Processing.txt
p1.tex
p3.tex
03 Models and Metaphors.txt
p2.tex
master.aux
front_matter.tex

我认为我的代码只需要一个简单的修改就可以完成我想要的,但我无法解决这个问题。

【问题讨论】:

  • 您的循环不变式是您将打印文件名。尝试更改它,使其成为打印目录,然后打印其余部分。

标签: python dictionary nested


【解决方案1】:

将前面目录的路径保存在第二个参数prefix中:

import os
def get_files(directory, prefix=[]):
    for filename in directory.keys():
        path = prefix+[filename]
        if not isinstance(directory[filename], dict):
            print os.path.join(*path)
        else:
            get_files(directory[filename], path)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2018-01-31
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2017-10-26
    相关资源
    最近更新 更多