2024-03-28 17:05:17 发布
网友
字典的类型码是什么?你知道吗
dict_array = array.array('x', [dict1, dict2, dict3])
我不知道在'x'该放什么。有没有其他方法可以做到或不可能?我不想要一个list的dict,我想要一个array。你知道吗
'x'
list
dict
array
正如其他评论所指出的,一本词典是你最好的选择。首先,您可以按如下方式定义各个词典:
dict1 = {1 : 'first value', 2 : 'second value'} dict2 = {1 : 'first value', 2 : 'second value'} dict3 = {1 : 'first value', 2 : 'second value'}
然后定义一个数组,其中键是索引:
dict_of_dicts = {1 : dict1, 2 : dict2, 3 : dict3}
注意:如果您选择,索引可以匹配从0开始的数组表示法。你知道吗
然后,可以访问字典元素(在打印每个元素的示例中):
#This will neatly print out each dictionary, and its' elements, inserting a newline after each element has been printed. for key, value in dict_of_dicts.items(): print('{} = {'.format(key), end='') for i in value: print(i, end='') print('}')
如果您不想要列表,这可能是您的最佳选择。但是,如果出于某种原因,它确实需要一组字典,那么请访问@meowgoesthedog posted链接。你知道吗
一个hack(仅适用于CPython)是将指针存储到array中的每个字典:
import array import _ctypes def di(obj_id): """ Reverse of id() function. """ # from https://stackoverflow.com/a/15012814/355230 return _ctypes.PyObj_FromPtr(obj_id) dict1 = {'key': '1'} dict2 = {'key': '2'} dict3 = {'key': '3'} dict_array = array.array('q', map(id, [dict1, dict2, dict3])) for i, ptr in enumerate(dict_array): print('dict_array[{}]: <0x{:08x}> {!r}'.format(i, ptr, di(ptr)))
输出:
dict_array[0]: <0x00946630> {'key': '1'} dict_array[1]: <0x00946690> {'key': '2'} dict_array[2]: <0x00d80660> {'key': '3'}
然而@tobias\k提出了一种更简单、更好的(IMO)方法,即使用整数字典键而不是内存指针。你知道吗
下面是一个这样做的例子:
import array dicts = { 0: {'key': '1'}, 1: {'key': '2'}, 2: {'key': '3'}, } dict_array = array.array('L', dicts.keys()) for i, key in enumerate(dict_array): print('dict_array[{}]: {!r}'.format(i, dicts[key]))
dict_array[0]: {'key': '1'} dict_array[1]: {'key': '2'} dict_array[2]: {'key': '3'}
正如其他评论所指出的,一本词典是你最好的选择。首先,您可以按如下方式定义各个词典:
然后定义一个数组,其中键是索引:
注意:如果您选择,索引可以匹配从0开始的数组表示法。你知道吗
然后,可以访问字典元素(在打印每个元素的示例中):
如果您不想要列表,这可能是您的最佳选择。但是,如果出于某种原因,它确实需要一组字典,那么请访问@meowgoesthedog posted链接。你知道吗
一个hack(仅适用于CPython)是将指针存储到
array
中的每个字典:输出:
然而@tobias\k提出了一种更简单、更好的(IMO)方法,即使用整数字典键而不是内存指针。你知道吗
下面是一个这样做的例子:
输出:
相关问题 更多 >
编程相关推荐