2016-10-20 3 views
1

좋은 하루! 파이썬에서 발전기 사전 내부 반복에 대한 질문이 있습니다 :생성자 사전 내의 반복 변수

sort_dict = {select_keys: {rows: {j: item for item in self.csv_dict.values() if item.get(select_keys) == rows} for rows in keys}} 

변수 j 증가는 데이터가 기록되는 vyrozhenie까지 할 필요가있다이 :

for item in self.csv_dict.values() if item.get (select_keys) == rows} 

내가 파이썬에 새로 온 사람, 그래서 어리석은 질문에 사과드립니다. 나는 오랜 세월 동안이 사소한 문제를 해결하기 위해 싸웠지 만 수행해야한다. 왜냐하면이 문제가 지금 당장 필요하기 때문이다.

'CSV 가져 오기

클래스 CSV() :

street,city,zip,state,beds,baths,sq__ft,type,sale_date,price,latitude,longitude 3526 HIGH ST,SACRAMENTO,95838,CA,2,1,836,Residential,Wed May 21 00:00:00 EDT 2008,59222,38.631913,-121.434879 :

def __init__(self, file_path): 
    super().__init__() 
    self.file_path = file_path 
    self.csv_dict = {} 

"""Данный метод парсит переданный в класс CSV файл""" 
def parseeCSV(self): 
    print('\n') 
    self.getDictCSV() 
    print(self.getListKeysCSV()) 
    unic_key = self.getUnicValFromCustomKeys('zip') 
    sort_csv = self.getCsvSortForKeys(unic_key, 'zip') 

"""Данный метод создает словарь из переданного в класс CSV файла 
Словарь вида {Номер строки(записи){строка(запись)}} 
""" 
def getDictCSV(self): 
    i = 0 
    with open(self.file_path, 'r') as csv_desctiptor: 
     csv_obj = csv.DictReader(csv_desctiptor) 
     for csv_dict in csv_obj: 
      self.csv_dict[i] = csv_dict 
      i = i + 1 
    del csv_desctiptor 
    return True 

"""Данный метод возвращает все ключи из словаря self.csv_dict[0]""" 
def getListKeysCSV(self): 
    return dict.keys(self.csv_dict[0]) 

"""Данный метод возвращает уникальные значения по выбранным полям""" 
def getUnicValFromCustomKeys(self, keys): 
    i = 0 
    val_key = {} 
    while i < len(self.csv_dict): 
     val_key[i] = self.csv_dict[i].get(keys) 
     unic_val_key = set(val_key.values()) 
     i = i + 1 
    return unic_val_key 

def getCsvSortForKeys(self, keys, select_keys): 
    #sort_dict = {select_keys: {rows: '' for rows in keys}} 
    i = 0` 

그것은 파일의 CSV 형식을 구문 분석

이 피어싱 파일 CSV를 다루는 클래스

동시에 그는 Diction 워 유형 : 예를 들어

csv_dict[key_select][key_select_val][num-element][element_csv_string]

: 사전에 csv_dict['zip']['95838'][1][3526 HIGH ST,SACRAMENTO,95838,CA,2,1,836,Residential,Wed May 21 00:00:00 EDT 2008,59222,38.631913,-121.434879

감사합니다, 나는 바보 같은 질문을 드려 죄송합니다.

+0

무엇이'j'입니까? 'j.'는'0..n'과 같이 증가 할 것인가, 아니면 특정 증분이 있습니까? –

+0

나는 당신의 질문을 이해하지 못하지만,''enumerate'' (https://docs.python.org/3/library/functions.html#enumerate)를 사용하여'j' 값을 생성 할 수 있습니다. –

+0

@ SSj.Luffy J - 이것은 정수 유형의 일반적인 변수입니다. 각 반복마다 1 씩 증가시키고 값이 0이되도록 행 사전 항목을 실행하면 모든 것이 다시 시작됩니다. –

답변

1

제발, 질문을 설명하십시오.

코드에서 j의 참조를 수집 할 수 없습니다. 또한 코드가 잘못 작성된 것 같습니다.

sort_dict = {select_keys: {rows: 
    {j: item for j,item in enumerate(self.csv_dict.values()) 
     if item.get(select_keys) == rows} for rows in keys}} 

희망 하시겠습니까?

+0

피어싱 파일을 처리하는 클래스가 있습니다 csv : –

+0

sort_dict = {item_get (select_keys) == rows} 키에있는 행의 경우 {} {select_keys : {행 : {j : j의 항목, 열거하는 항목 (self.csv_dict.values ​​())} –

+0

죄송합니다. 처음으로 stackoverflow에. 나는 주제를 확장하여 귀하의 질문에 대답했습니다. –