从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中两个数字之间的字典中获取所有键的主要内容,如果未能解决你的问题,请参考以下文章

Python基础之字典

Python - 如何在 django 模板中为所有值并排显示两个键的字典值

python入门学习:5.字典

Python字典

读取csv字典变成str了怎么办

Python3 字典键的数据类型不同报错