什么是字典的类型码'x'?
dict_array = array.array('x', [dict1, dict2, dict3])我不知道该怎么看待'x'。有没有其他方法可以做到这一点,还是不可能?我不想要dicts的list,我想要它们的array。
发布于 2019-02-15 01:03:33
一个技巧(仅适用于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'}发布于 2019-02-15 00:59:36
正如其他评论所指出的那样,字典将是你最好的选择。您应该首先定义您的单个字典,如下所示:
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发布的链接。
https://stackoverflow.com/questions/54695036
复制相似问题