我想通过指定
来搜索字典目前我的代码是:
propid = ['001', '002', '003', '004'],
owner = ['bob', 'jim', 'rosie', 'anna'],
housenumber = ['1', '12', '31', '44'],
postcode = ['CF10 1AN', 'CF24 4AN', 'CF33 3AA', 'CF10 1AN'],
price = ['100000', '200000', '300000', '400000']
prop_dict = {propid[i]:[owner[i], housenumber[i], postcode[i], price[i]] for i in range(len(propid))
我想在这本词典中搜索:
我通过执行以下操作来管理:
def searchPC(values, searchFor):
for k in values:
for v in values[k]:
if searchFor in v:
print(k,":", prop_dict[k])
return None
我想将价格从字典列表转换为整数,但显然只是价格部分,然后想要进行类似的搜索,就像我在第1部分中编写但具有最小值和最大值。
我该怎么做呢?特别是整数部分
由于
答案 0 :(得分:0)
在我回答你的问题之前,你的代码中有一些错误:
owner = ['bob', 'jim', 'rosie', 'anna'],
返回一个元组而不是列表,因为尾随,
见:
owner = ['bob', 'jim', 'rosie', 'anna'],
print(type(owner))
#prints <class 'tuple'>
您还缺少词典理解中的结束}
。
你的问题的答案:
propid = ['001', '002', '003', '004']
owner = ['bob', 'jim', 'rosie', 'anna']
housenumber = ['1', '12', '31', '44']
postcode = ['CF10 1AN', 'CF24 4AN', 'CF33 3AA', 'CF10 1AN']
price = ['100000', '200000', '300000', '400000']
prop_dict = {propid[i]:[owner[i], housenumber[i], postcode[i], price[i]] for i in range(len(propid))}
look = 'CF24 4AN'
price_range = range(50000,150000)
for k,v in prop_dict.items():
if look in v:
print('{} has {}'.format(k,v))
if int(v[3]) in price_range:
print('{} with {} is in range'.format(k,v))
使用dict.items()
在迭代它时从字典中获取密钥和值。
然后比较您要查找的项目是否在值列表中,如果是,则打印它或执行某些操作。
您可以使用range
对象查找价格是否在范围内。只需确保在比较之前将价格从字典转换为int。将范围更改为您要查找的范围
注意这个答案适用于Python 3,因为它使用了range()
。此外,如果您关心类型错误检查,请使用以下检查范围的方法。或者如果您使用的是旧版本,请使用
low_value = 50000
high_value = 150000
if low_value <= int(v[3]) <= high_value: