词典的类型代码'x'
是什么?
dict_array = array.array('x', [dict1, dict2, dict3])
我不知道该放在'x'
的什么地方。还有另一种方法可以完成还是不可能?我不需要list
个dict
,我想要其中array
。
答案 0 :(得分:1)
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'}
答案 1 :(得分:0)
正如其他评论所指出的那样,词典词典将是您最好的选择。首先,您应按以下方式定义各个词典:
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。