[英]Need help iterating over python dictionary values
我正在研究一个程序来搜索字典值集,并对与用户输入匹配的值执行一种方法。 我必须对这些值进行比较和排序。
这是我现在正在使用的代码
价值搜索和比较代码(非常粗糙)
import nation
import pickle
KK = 1000000
pickle_in = open("nationsDict.dat","rb")
d = pickle.load(pickle_in)
k = raw_input("Enter a continent: ")
for value in d.values():
if k in d.values()[0]:
print d.values()[0]
国家级代码
class Nations:
KK = 1000000
def __init__(self, ctry, cont, pop, area):
self.country = ctry
self.continent = cont
self.population = float(pop)
self.area = float(area)
def popDensity(self):
popDensity = (self.population*self.KK) / self.area
popDensity = str(round(popDensity, 2))
return popDensity
创建泡菜字典的代码
import nation
import pickle
i=0
dictUN = {}
with open('UN.txt') as f:
for line in f:
"""Data get from file"""
elements = line.strip().split(",")
n = nation.Nations(elements[0],elements[1],elements[2],elements[3])
"""Density"""
n.popDensity()
print "The density of", n.country, "is",n.popDensity(),"people per square mile."
"""Dictionary creation"""
dictVal = (n.continent, n.population, n.area)
dictUN.update({n.country: dictVal})
pickle_out = open("nationsDict.dat", "wb")
pickle.dump(dictUN, pickle_out)
pickle_out.close()
这是UN.txt的片段
Mauritania,Africa,3.5,397954
Mauritius,Africa,1.3,787
Mexico,North America,120.3,761606
Micronesia,Australia/Oceania,.11,271
Monaco,Europe,.031,0.76
Mongolia,Asia,3.0,603909
Montenegro,Europe,.65,5019
Morocco,Africa,33.0,172414
在这一点上,我的问题已包含在值搜索和比较中。 具体来说,我的程序必须
我要说的一个大问题是如何处理值中的元素对字典的搜索。 我还考虑过使用以continent元素为键的临时字典,但是我不确定这样做是否会使我的生活变得更轻松,因为我必须对其执行popDensity方法。
任何帮助表示赞赏,谢谢!
如果大陆匹配:
一种。 计算人口密度。
b。 如果该值大于熊猫系列中的最小值:
一世。 删除最后一个条目
ii。将该值添加到熊猫系列值中,并将国家/地区添加到索引中
iii。 排序熊猫系列对象升序= False
如果您要重复执行此操作,那么创建一个continent-> country词典肯定会节省时间。
很高兴这很有帮助。 我将其添加为答案,以便您可以接受。
就像列表理解一样,字典理解也一样……这很酷! d2 = {k:d[k] for k in d.keys() if <some_elem> in d[k]}
将为您提供一个包含满足您要求的原始dict子集的dict。 您将必须<some_elem> in d[k]
部分中填写<some_elem> in d[k]
,因为我没有遍历所有代码。 您说这是您的主要问题。 希望这能给您足够的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.