사전 값 세트를 검색하고 사용자 입력과 일치하는 값에 대해 메소드를 수행하는 프로그램에서 작업하고 있습니다. 이 값들을 비교하고 정렬해야합니다. 파이썬 사전 값을 반복하는 데 도움이 필요합니다
이
내가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()
다음은이 시점에서
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
내 문제가 꽤 값 검색에 포함와 비교된다 UN.txt
에서 미리보기입니다. 특히, 내 프로그램은- 하려면 사용자가
- 비교 일치하는 모든 국가에 Nations.popDensity (국가 클래스에 포함) (값 목록의 첫 번째 요소) 대륙
- 이 방법을 수행을 검색 할 수있다 대륙마다 상위 5 개의 밀도 값을 반환합니다.
나는 하나의 큰 질문은 값의 요소로 사전 검색을 처리하는 방법이라고 말하고 싶습니다. 또한 대륙 요소를 키로 사용하여 임시 사전을 작성하는 방법에 대해 생각해 봤지만 popDensity 메소드를 수행해야하므로 내 인생을 더 쉽게 만들어 줄지 확신하지 못합니다.
감사합니다. 감사합니다. 사전을 통해
목록의 독해가있는 것처럼, 사전의 이해가 있습니다 ... 꽤 멋진 물건입니다! 'd [k]}의 인 경우 d.keys()의 k에 대한 d2 = {k : d [k]는 사용자의 요구 사항을 충족하는 원본 dict의 하위 집합을 제공합니다. 모든 코드를 검토하지 않았기 때문에 d [k] 부분에' '을 채워야합니다. 네가 가진 주요 질문이라고 했지. 호프 풀은이를 해결할 수있는 충분한 기회를 제공합니다. –
Gary02127
완벽하게 작동했습니다. 사전/목록 이해에서 지금 읽고있을 것입니다 : D – user8585343
정보가 도움이 되었기를 기원합니다! 답변으로 추가 했으므로 결과에 만족한다면 받아 들일 수 있습니다. – Gary02127