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