我正在用Python(2.6)编写一个应用程序,它要求我使用字典作为数据存储.
我很好奇是否有更大的内存效率来拥有一个大字典,或者将其分解为许多(更多)更小的字典,然后有一个"索引"字典,其中包含对所有较小字典的引用.
我知道列表和词典通常会有很多开销.我在某处读到python内部分配了足够的空间,字典/列出项目的数量为2的幂.
我对python有足够的新意,我不确定是否还有其他意想不到的内部复杂性/类似的事情,这对普通用户来说并不明显,我应该考虑到这一点.
其中一个困难是知道2系统的功能如何计算"项目"?是每个键:对计为1项?这似乎很重要,因为如果你有一个100项单片词典,那么将分配空间100 ^ 2项.如果你有100个单项词典(1键:对),那么每个词典只会分配1 ^ 2(也就是没有额外的分配)?
任何清晰的信息都会非常有用!
我想知道如何找到字典元素的变量名称:
例如:
>>>dict1={}
>>>dict2={}
>>>dict1['0001']='0002'
>>>dict2['nth_dict_item']=dict1
>>>print dict2
{'nth_dict_item': {'0001': '0002'}}
>>>print dict2['nth_dict_item']
{'001': '002'}
Run Code Online (Sandbox Code Playgroud)
我怎样才能告诉我dict2 ['nth_dict_item']是或正在引用"dict1"?我想要它引用的数据结构的名称而不是数据本身.
如果我将id(dict1)的输出与id(dict2 ['nth_dict_item'])进行比较,我发现它们是相同的.
但是,如何将该ID转换为变量名?是否有更直接/更清晰的方法来获取我想知道的信息?
我敢肯定我只是忽略了一个能让我的生活轻松的功能,但我对Python很陌生:)
任何帮助表示赞赏,谢谢!
更新:这就是为什么我希望这个工作:
我正在尝试制作一个使用类似数据库的字典的应用程序.我希望这个伪代码的功能起作用:
dict_1={}
dict_2={}
dict_3={}
dict_1["FooBar1.avi"]=[movie_duration,movie_type,comments]
dict_2["FooBar2.avi"]=[movie_duration,movie_type,comments]
dict_3["FooBar3.avi"]=[movie_duration,movie_type,comments]
dict_database[SomeUniqueIdentifier1]=dict_1
dict_database[SomeUniqueIdentifier2]=dict_2
dict_database[SomeUniqueIdentifier3]=dict_3
Run Code Online (Sandbox Code Playgroud)
SomeUniqueIdentifier#将是一个唯一值,我将其用作数据库键/ unqiueID来查找条目.
我希望能够通过以下方式更新FooBar1.avi的"评论"字段:
WhichDict= dict_database[SomeUniqueIdentifier1]
WhichDict[WhichDict.keys()[0]][2]='newcomment'
Run Code Online (Sandbox Code Playgroud)
而不是必须做:
dict_database['SomeUniqueIdentifier1'][dict_database['SomeUniqueIdentifier1'].keys()[0]][2]='newcomment'
Run Code Online (Sandbox Code Playgroud)
感谢大家.我现在明白我误解了很多基础知识(全脑屁).将返回并修复设计.谢谢大家!