drb*_*sen 0 python dictionary nested
我正在尝试从中读取数据并创建嵌套的字典字典.还有一个类似的问题在这里,但我似乎无法弄清楚如何适应解决我的具体问题.如果有人能解释我的问题解决方案,我将非常感激.
基本上,我有一个看起来像这样的文件:
A 'abc' 12 0.001
B 'tex' 34 0.002
B 'tex' 78 0.005
E 'yet' 88 0.090
A 'abc' 22 0.120
Run Code Online (Sandbox Code Playgroud)
我需要创建一个如下所示的复杂字典:
complete_dict = {A:{'abc':[[12, 0.001], [22, 0.120]]},
B:{'tex':[[34, 0.002], [78, 0.005]]},
E:{'yet':[[88, 0.090]]}}
Run Code Online (Sandbox Code Playgroud)
我可以创建内部字典,但我无法弄清楚如何创建外部字典.这是我的内部字典的代码:
with open('data.txt', mode="r") as data_file:
fieldnames = ('character', 'string', 'value1', 'value2')
reader = csv.DictReader(data_file, fieldnames=fieldnames, delimiter="\t")
inner_dict = {}
for row in reader:
values = [int(row['value1']), float(row['value2'])]
string = row['string']
if string in inner_dict:
inner_dict[string].append(values)
else:
inner_dict[string] = values
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何创建外部字典吗?我唯一的想法是读取文件并创建内部字典,然后重新读取文件以创建外部字典.当然必须有一个更简单的方法吗?在此先感谢您的帮助!
这是你想要完成的吗?
with open('data.txt', mode="r") as data_file:
fieldnames = ('character', 'string', 'value1', 'value2')
reader = csv.DictReader(data_file, fieldnames=fieldnames, delimiter="\t")
complete_dict = {}
for row in reader:
char_dict = complete_dict.setdefault(row['character'], {})
values_list = char_dict.setdefault(row['string'], [])
values = [int(row['value1']), float(row['value2'])]
values_list.append(values)
pprint.pprint(complete_dict)
Run Code Online (Sandbox Code Playgroud)
请注意,在您的示例中,您有'value2',您想要'value1'.此外,这似乎包括字符串周围的单引号作为字符串的一部分,因此您可能需要清理它.