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。