带有命名值的字典?

zlr*_*zlr 0 python dictionary data-structures

我有这样一个文件:

A X V1
A Y V2
B X V3
B Y V4
Run Code Online (Sandbox Code Playgroud)

假设第一列是模型类型,第二列是版本号,第三列是相关的值.

我想回答这个问题:"模型A,版本X的价值是什么?" 适用于所有值和所有版本.

我想使用dict,但我只知道每个键有一个值的dicts.这里需要两个键,例如:

d[model][version] = value 
Run Code Online (Sandbox Code Playgroud)

你会怎么做?

Mar*_*ers 8

你可以嵌套词典:

d['A'] = {}
d['A']['X'] = 'V1'
Run Code Online (Sandbox Code Playgroud)

或者您可以使用元组键代替:

d[('A', 'X')] = 'V1'
Run Code Online (Sandbox Code Playgroud)

嵌套可以更容易地列出给定模型的所有已知版本:

versions_for_model = d['A'].keys()
Run Code Online (Sandbox Code Playgroud)

使用collections.defaultdict()以下命令可以简化创建嵌套字典设置:

d = defaultdict(dict)
d['A']['X'] = 'V1'
Run Code Online (Sandbox Code Playgroud)

这里尝试访问d['A']自动创建一个新的字典值.