有没有办法将元组用作工具架中的键?(Python)
我想使用Python中的shelve模块使用元组(1,2,3)作为键。我可以用字典做到这一点:有没有办法将元组用作工具架中的键?(Python),python,shelve,Python,Shelve,我想使用Python中的shelve模块使用元组(1,2,3)作为键。我可以用字典做到这一点: d = {} d[(1,2,3)] = 4 但如果我尝试使用shelve: s = shelve.open('myshelf') s[(1,2,3)] = 4 我得到:“TypeError:键需要字符串或整数对象,找到元组” 有什么建议吗 使用元组的repr()如何: s[repr((1,2,3))] = 4 根据, 工具架中的值(不是键!) 基本上可以是任意的Python 物体 我的重点是:书
d = {}
d[(1,2,3)] = 4
但如果我尝试使用shelve:
s = shelve.open('myshelf')
s[(1,2,3)] = 4
我得到:“TypeError:键需要字符串或整数对象,找到元组”
有什么建议吗 使用元组的repr()如何:
s[repr((1,2,3))] = 4
根据,
工具架中的值(不是键!)
基本上可以是任意的Python
物体
我的重点是:书架键必须是字符串,句号。因此,您需要将元组转换为str;根据元组中的内容,
repr
,一些分隔符。join
、pickle、marshall等可以有效地用于此目的。如果想要任意键,为什么不使用字典呢?另一个选项是使用repr或str方法围绕元组构建包装器类,将其更改为字符串。我正在考虑一个库(对书架的自然响应)-您的元组可以是中的元素,str创建一个串联的完整表示。这可能是一个老问题,但我有同样的问题
我经常使用shelve,经常想使用非字符串键。
我将shelvemodules类子类化为一个shelf,它自动将非字符串键转换为字符串键,并在查询时以原始形式返回它们。
它适用于Python的标准不可变对象:int、float、string、tuple、boolean
可在以下网址找到: