我有一个文件列表,我需要在其中选择几行中包含CommonChar的行,并且可以创建字典。 我感兴趣的文件中的行看起来像这样:
CommonChar uniqueName field value
CommonChar uniqueName field1 value1
CommonChar uniqueName1 field value
CommonChar uniqueName1 field1 value1
因此,我想要一个最终字典,它将在uniqueName和键值对上命名的内部字典存储为(field:value,field1:value1)
这样我将有一个基于uniqueName和键值对的内部字典的主dict。
最终输出应如下所示:
mainDic={'uniqueName': {'field':'value', 'field1':value1, 'field2':value2},
'uniqueName1':{'field':'value', 'field1':value1, 'field2':value2} }
答案 0 :(得分:0)
查看defaultdict!导入from collections import defaultdict
。如果您从mainDict = defaultdict(dict)
开始,如果您尝试分配密钥,它将自动创建字典。 mainDict['Apple']['American'] = '16'
将像魔术一样发挥作用。
如果您需要在子词典中增加新键you can also put a defaultdict in a defaultdict
文档:https://docs.python.org/3/library/collections.html#collections.defaultdict
答案 1 :(得分:0)
'苹果'和'葡萄'因为它们是字符串,所以不能创建为字典。我假设你的程序中有一个流程 像这样:
如果没有,请将其添加到主键' Apple'
下的mainDict值mainDict= {'Grapes':{'Arabian':'25','Indian':'20'} }
apple = {'American':'16', 'Mexican':10, 'Chinese':5}
if apple not in mainDict.values():
mainDict['Apple'] = apple
mainDict
输出:
{'Apple': {'American': '16', 'Chinese': 5, 'Mexican': 10},
'Grapes': {'Arabian': '25', 'Indian': '20'}}
我认为你遇到的问题是,没有通用的方法来获得这个名字 一个对象作为字符串。 Dicts没有名称属性。请参阅以下答案:How can I get the name of an object in Python?