mig*_*uel 5 python dictionary python-2.7
subjects = {
0:9,'fail': 0,
9:14, 'pass': 25,
15:17, 'merit': 40,
18:20,'Distinction': 50
}
Run Code Online (Sandbox Code Playgroud)
我希望上面的字典包含3个维度.用户输入将在初始数字之间.根据用户输入的号码,应显示以下消息.例如.4是失败值0分,10是传球值25分等等.
inputs = ['irish','english','french','italian','dutch','german']
for i in range(1, 7):
inputs.append(raw_input('Enter mark for {}: '.format(i)))
Run Code Online (Sandbox Code Playgroud)
我想循环要求输入标记为爱尔兰等
print sum(subjects[name][value] for name in inputs)
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
字典基于键的散列来存储其值。
这意味着字典查找仅返回其键与查找中使用的键完全匹配的条目。
您不能让键为“3 到 5 范围内的任何数字”并期望查找“4”。
但是,您可以做的是复制字典条目:
subject_ranges = [(0, 8, 'fail', 0),
(9, 14, 'pass', 25),
(15, 17, 'merit', 40),
(18, 20, 'Distinction', 50)]
subjects = {}
for low, high, descr, points in subject_ranges:
for score in range(low, high+1):
subjects[score] = {'description': descr, 'value': points}
Run Code Online (Sandbox Code Playgroud)
并像这样收集输入:
input_names = ['irish','english','french','italian','dutch','german']
scores = []
for i in range(len(input_names)):
scores.append(int(raw_input('Enter mark for %s: ' % input_names[i])))
Run Code Online (Sandbox Code Playgroud)
现在,此代码将按照您的意愿打印总分:
print sum(subjects[score]['value'] for score in scores)
Run Code Online (Sandbox Code Playgroud)
这不是一本“三维词典”,也不是类似的东西。它是一个字典,其键是整数,其值是二元素字典(如果您愿意,可以使用 NamedTuple)。但从你的问题来看,你实际上并不需要比这更复杂的东西。