在字典中访问字典的一个元素

时间:2019-08-11 23:07:40

标签: python dictionary

我正在创建动态字典,如下所示:

my_dict = {
    "file_name" : ""
}
my_dict = {
    "file_name" : "file_1.csv",
    "file_path" : "parent/folder/%s" % my_dict["file_name"]
}

我希望my_dict["file_path"]等于"parent/folder/file_1.csv"

我怎么能意识到这一点? 我正在寻找一种解决方案,只要“ file_name”更新,它就会更新“ file_path”。

2 个答案:

答案 0 :(得分:2)

您不能在dict尚未初始化的同一语句中执行此操作。您可以尝试如下操作:

my_dict = {
    "file_name" : "file_1.csv",
}
my_dict["file_path"] = "parent/folder/%s" % my_dict["file_name"]

答案 1 :(得分:0)

您需要编写一个简单的类。我认为,可以同时设置两个属性的属性,同时将file_name的设置器设置为file_path,并禁用file_path的设置器。

但是更好的选择是将目录名和基本名分开,并具有将它们连接在一起的path属性。这是一个简单的示例:

import os

class MyClass:
    def __init__(self, dirname, basename):
        self.dirname = dirname
        self.basename = basename

    # This method is not crucial to the example, just nice to add
    def __repr__(self):
        r = '{}({!r}, {!r})'.format(
            self.__class__.__name__,
            self.dirname,
            self.basename,
            )
        return r

    @property
    def path(self):
        return os.path.join(self.dirname, self.basename)

c = MyClass('parent/folder', 'file_1.csv')

print(c.path)  # -> parent/folder/file_1.csv

c.basename = 'foo.txt'

print(c.path)  # -> parent/folder/foo.txt

c.path = 'foo/bar.csv'  # -> AttributeError: can't set attribute

如果需要,可以为使用path的{​​{1}}添加一个setter并设置os.path.splitdirname