小编Bra*_*n K的帖子

内存效率:一个大字典或较小字典的字典?

我正在用Python(2.6)编写一个应用程序,它要求我使用字典作为数据存储.

我很好奇是否有更大的内存效率来拥有一个大字典,或者将其分解为许多(更多)更小的字典,然后有一个"索引"字典,其中包含对所有较小字典的引用.

我知道列表和词典通常会有很多开销.我在某处读到python内部分配了足够的空间,字典/列出项目的数量为2的幂.

我对python有足够的新意,我不确定是否还有其他意想不到的内部复杂性/类似的事情,这对普通用户来说并不明显,我应该考虑到这一点.

其中一个困难是知道2系统的功能如何计算"项目"?是每个键:对计为1项?这似乎很重要,因为如果你有一个100项单片词典,那么将分配空间100 ^ 2项.如果你有100个单项词典(1键:对),那么每个词典只会分配1 ^ 2(也就是没有额外的分配)?

任何清晰的信息都会非常有用!

python memory performance dictionary

33
推荐指数
5
解决办法
3万
查看次数

Python:如何提取字典条目的变量名?

我想知道如何找到字典元素的变量名称:

例如:

    >>>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)

感谢大家.我现在明白我误解了很多基础知识(全脑屁).将返回并修复设计.谢谢大家!

python variables lookup dictionary

2
推荐指数
2
解决办法
5359
查看次数

标签 统计

dictionary ×2

python ×2

lookup ×1

memory ×1

performance ×1

variables ×1