Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问字典中字典的一个元素_Python_Dictionary - Fatal编程技术网

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

Python 访问字典中字典的一个元素,python,dictionary,Python,Dictionary,我正在创建一个动态字典,如下所示: my_dict={ “文件名”:” } 我的字典={ “文件名”:“文件名1.csv”, “文件路径”:“父/文件夹/%s”%my\u dict[“文件名”] } 我希望my_dict[“file_path”]等于“parent/folder/file_1.csv” 我怎样才能意识到这一点? 我正在寻找一种解决方案,每当“文件名”被更新时,它都会更新“文件路径”。您不能在同一语句中执行此操作,因为dict尚未初始化。您可以尝试以下方法: my_dict =

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

my_dict={
“文件名”:”
}
我的字典={
“文件名”:“文件名1.csv”,
“文件路径”:“父/文件夹/%s”%my\u dict[“文件名”]
}
我希望
my_dict[“file_path”]
等于
“parent/folder/file_1.csv”

我怎样才能意识到这一点?
我正在寻找一种解决方案,每当“文件名”被更新时,它都会更新“文件路径”。

您不能在同一语句中执行此操作,因为
dict
尚未初始化。您可以尝试以下方法:

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

您需要编写一个简单的类。我认为如果您将属性设置为两个属性,将
文件名
的setter设置为设置
文件路径
,并禁用
文件路径
的setter,这是可能的

但更好的选择是将dirname和basename分开,并使用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
添加一个setter,该setter使用
os.path.split
并设置
dirname
basename

嘿,谢谢您的回复,我实际上已经尝试过了,但这并不是我想要的。比方说,我编辑“文件名”键mid代码,如何确保“文件路径”也会被更新?抱歉,如果我不清楚,很遗憾,您不能根据任何其他变量动态更新dict值。你可以做的是创建一个返回
文件路径的函数,并使用该函数而不是使用dict。我不确定你到底想要实现什么,但我猜你最好使用带有@property setter或getter的简单自定义类,而不是dict。