Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建一本大词典而不是一堆小词典_Python_Pointers_Dictionary_Nested Loops - Fatal编程技术网

Python 如何创建一本大词典而不是一堆小词典

Python 如何创建一本大词典而不是一堆小词典,python,pointers,dictionary,nested-loops,Python,Pointers,Dictionary,Nested Loops,我有个问题。解决方案可能是直截了当的,但我没有看到。下面的代码返回一组单独的字典,而不是一个大字典。然后,我遍历这些小字典以提取值。问题是,我宁愿通过一本大字典而不是一堆小字典来分类。“objFunctions.getAttributes”返回一个字典。“objFunctions.getRelationships”返回一个指针 这是输出: {1:value} {2:value} {3:value} 这就是我想要的: {1:value,2:value,3:value} for object in

我有个问题。解决方案可能是直截了当的,但我没有看到。下面的代码返回一组单独的字典,而不是一个大字典。然后,我遍历这些小字典以提取值。问题是,我宁愿通过一本大字典而不是一堆小字典来分类。“objFunctions.getAttributes”返回一个字典。“objFunctions.getRelationships”返回一个指针

这是输出: {1:value} {2:value} {3:value}

这就是我想要的: {1:value,2:value,3:value}

for object in objList:
   relationship = objFunctions.getRelationships(object)
   for relPtr in relationships:
      uglyDict = objFunctions.getAttributes(relPtr)
使用以下命令合并命令:

attributes = {}
for object in objList:
    relationship = objFunctions.getRelationships(object)
    for relPtr in relationships:
        attributes.update(objFunctions.getAttributes(relPtr))
请注意,如果在
.getAttributes
的不同调用中重复一个键,则最后存储在
attributes
中的值将是该键返回的最后一个值

如果您不介意将值存储为列表;您必须手动将DICT与一个接一个附加到defaultdict的值合并:

from collections import defaultdict

attributes = defaultdict(list)
for object in objList:
    relationship = objFunctions.getRelationships(object)
    for relPtr in relationships:
        for key, value in objFunctions.getAttributes(relPtr):
            attributes[key].append(value)
现在,您的
属性
dict将包含每个键的列表,以及收集到的各种值。您也可以使用集合,使用
defaultdict(set)
属性[key]。改为添加(值)

使用合并dict:

attributes = {}
for object in objList:
    relationship = objFunctions.getRelationships(object)
    for relPtr in relationships:
        attributes.update(objFunctions.getAttributes(relPtr))
>>> from collections import defaultdict
>>> x = defaultdict(list)
>>> y = defaultdict(list)
>>> x[1].append("value1")
>>> x[2].append("value2")
>>> y[1].append("value3")
>>> y[2].append("value4")
>>> for k in y:
...     x[k].extend(y[k])
...
>>> print x
defaultdict(<type 'list'>, {1: ['value1', 'value3'], 2: ['value2', 'value4']})
请注意,如果在
.getAttributes
的不同调用中重复一个键,则最后存储在
attributes
中的值将是该键返回的最后一个值

如果您不介意将值存储为列表;您必须手动将DICT与一个接一个附加到defaultdict的值合并:

from collections import defaultdict

attributes = defaultdict(list)
for object in objList:
    relationship = objFunctions.getRelationships(object)
    for relPtr in relationships:
        for key, value in objFunctions.getAttributes(relPtr):
            attributes[key].append(value)
现在,您的
属性
dict将包含每个键的列表,以及收集到的各种值。您也可以使用集合,使用
defaultdict(set)
属性[key]。改为添加(值)

>>从集合导入defaultdict
>>> from collections import defaultdict
>>> x = defaultdict(list)
>>> y = defaultdict(list)
>>> x[1].append("value1")
>>> x[2].append("value2")
>>> y[1].append("value3")
>>> y[2].append("value4")
>>> for k in y:
...     x[k].extend(y[k])
...
>>> print x
defaultdict(<type 'list'>, {1: ['value1', 'value3'], 2: ['value2', 'value4']})
>>>x=defaultdict(列表) >>>y=默认DICT(列表) >>>x[1]。追加(“值1”) >>>x[2]。追加(“值2”) >>>y[1]。追加(“值3”) >>>y[2]。追加(“值4”) >>>对于k in y: ... x[k]。扩展(y[k]) ... >>>打印x defaultdict(,{1:['value1','value3'],2:['value2','value4']})
>>从集合导入defaultdict
>>>x=defaultdict(列表)
>>>y=默认DICT(列表)
>>>x[1]。追加(“值1”)
>>>x[2]。追加(“值2”)
>>>y[1]。追加(“值3”)
>>>y[2]。追加(“值4”)
>>>对于k in y:
...     x[k]。扩展(y[k])
...
>>>打印x
defaultdict(,{1:['value1','value3'],2:['value2','value4']})

对。存在重复的关键点,这些重复的关键点的值是不同的。我需要他们所有你是对的。显而易见的解决办法。我想我必须不断地翻阅那些小字典。我觉得有更好的方法可以做到这一点。谢谢,我已经更新并添加了一些备选方案,其中的值收集在列表或集合中,而不是覆盖上一个键。对。存在重复的关键点,这些重复的关键点的值是不同的。我需要他们所有你是对的。显而易见的解决办法。我想我必须不断地翻阅那些小字典。我觉得有更好的方法可以做到这一点。谢谢,我已经更新并添加了一些替代方案,其中值收集在列表或集合中,而不是覆盖上一个键。Python没有指针。Python没有指针。