从python中两个数字之间的字典中获取所有键
Posted
技术标签:
【中文标题】从python中两个数字之间的字典中获取所有键【英文标题】:get all keys from dictionary between two numbers in python 【发布时间】:2019-10-03 06:57:49 【问题描述】:问题已解决,感谢所有帮助的人! :)
我正在尝试获取字典中最小和最大数字之间的所有键/值。
我正在尝试制作一个产品配置器,它建议需要哪些产品(轨道尺寸组合等)来创建特定尺寸的屏幕安装。
我曾尝试在 youtube 和 stack-overflow 上搜索此问题并获得非常接近的结果,但我不确定如何将它们实现到我的代码中。
示例代码(python 3.7):
lookup =
500: '1x 500mm',
1000: '1x 1000mm',
1500: '1x 1000mm + 1x 500mm',
2000: '2x 1000mm',
print('minimum length: ', min_length '\n maximum length: ',
max_length, '\n recommended solution: ')
for (trial) in lookup:
print(lookup(trial >= min_length and trial <= max_length))
我得到的错误信息是:
Traceback(最近一次调用最后一次):
打印(查找((试用)>= min_rail_calc 和(试用)
对不起,如果这是一个菜鸟问题,我只是 python 新手
【问题讨论】:
你的预期输出是什么? 用随意的外层if
语法替换。
你的预期输出是什么?
【参考方案1】:
对 dict 的迭代和对它的访问与对列表的访问有点不同。试试这个:
min_length = 600
max_length = 1600
lookup =
500: '1x 500mm',
1000: '1x 1000mm',
1500: '1x 1000mm + 1x 500mm',
2000: '2x 1000mm',
for trial, value in lookup.items():
if trial >= min_length and trial <= max_length:
print(value)
输出:
1x 1000mm
1x 1000mm + 1x 500mm
【讨论】:
【参考方案2】:你去(:
lookup =
500: '1x 500mm',
1000: '1x 1000mm',
1500: '1x 1000mm + 1x 500mm',
2000: '2x 1000mm',
min_length = 300
max_length = 1300
print('minimum length: ', min_length, '\nmaximum length: ', max_length, '\nrecommended solution: ')
for key in lookup.keys():
if min_length < key < max_length:
print(lookup[key])
在您的打印件上,您有一个我已修复的语法错误,还通过 [] 而不是 () 来调用 dict 上的对象,此外,您不会在 dict 中迭代每个变量,因为它们的顺序不有任何意义,如果你想对所有变量执行迭代,你可以迭代所有键。
【讨论】:
【参考方案3】:所以当你这样做时
for trial in lookup:
您正在遍历键。 如果你这样做:
for trial in lookup:
print(trial)
你会得到
#500
#1000
#1500
#2000
但是,如果您想访问每个位置的值,您可以:
for trial in lookup:
print(lookup[trial])
所以在这种情况下,“试用”变量正在遍历字典的键。因此,如果我们在迭代器处查询字典,它将返回该值。
因此,对于您的情况,如果您想比较这些值并打印它们,您所要做的就是将试验与最小值和最大值进行比较:
for trial in lookup:
if((trial >= min_length) and (trial <= max_length)):
print (#print whatever here)
【讨论】:
print(lookup[item])
应该是print(lookup[trial])
。以上是关于从python中两个数字之间的字典中获取所有键的主要内容,如果未能解决你的问题,请参考以下文章