2014-11-30 9 views
1

저는 Stack Overflow를 둘러 봤습니다.이 질문을 찾으십시오. Removing Duplicates From Dictionary 다른 질문에있는 사람이 저의 같은 문제를 가지고 있습니다. 나는 그 (것)들에게주는 해결책을 시도했다 그러나 그 (것)들의 아무도는 작동하지 않는다. 나 좀 도와 줄 수있어?사전에 중복 값을 제거합니다. 파이썬

여기 내 목록입니다. 내가 찾기() 하나의 "인쇄()"함수를 호출 할 때, 그때 출력이

def printed(filename, day, time): 
try: 
    result = {} 
    f = open(filename, 'r') 
    lines = f.readlines() 
    d = defaultdict(list) 
    start = lines.index(day+"\n") 
    if day == 'Monday\n': 
     stop = lines.index("Saturday\n") 
    elif day == 'Saturday\n': 
     stop = lines.index("Sunday\n") 
    else: 
     stop = len(lines) 
    if filename == "Bus 6 Cornaredo.txt" and filename == "Bus 6 Lugano Stazione.txt": 
     if day == "Sunday": 
      return "There are no buses this day for Bus 6" 
    else: 
     for line in lines[start:stop]: 
      line = line.replace('\n','') 
      line = line.replace(" ","") 
      line = line.split(".") 
      key = line[0] 
      if len(line) == 2: 
       d[key] += [line[1]] 
     d = dict(d) 
    for key,value in d.items(): 
     if value not in result.values(): 
      result[key] = value 
    return result 
except IOError: 
    print("File not found") 
    program() 

볼 수 있습니다 :와

{'21': ['19', '49', '19', '49'], 
'16': ['17', '32', '47', '22', '52'], 
'10': ['22', '52', '22', '52'], 
'11': ['22', '52', '22', '52'], 
'22': ['19', '49', '19', '49'], 
'23': ['19', '49', '19', '49'], 
'20': ['19', '49', '19', '49'], 
'17': ['03', '18', '33', '48', '22', '52'], 
'08': ['02', '17', '32', '47', '22', '52'], 
'07': ['02', '17', '32', '47', '19', '49'], 
'15': ['22', '52', '22', '52'], 
'13': ['22', '52', '22', '52'], 
'09': ['02', '22', '52', '22', '52'], 
'18': ['03', '18', '33', '48', '22', '52'], 
'14': ['22', '52', '22', '52'], 
'06': ['32', '47', '49'], 
'12': ['22', '52', '22', '52'], 
'19': ['03', '18', '33', '49', '22', '49']} 

같은 기능 그리고 여기 내 코드입니다

하십시오 위 업데이트 여기

def print_for_day_and_hour(filename, day): 
try: 
    result = {} 
    f = open(filename, 'r') 
    lines = f.readlines() 
    d = defaultdict(list) 
    start = lines.index(day+"\n") 
    if day == 'Monday\n': 
     stop = lines.index("Saturday\n") 
    elif day == 'Saturday\n': 
     stop = lines.index("Sunday\n") 
    else: 
     stop = len(lines) 
    if filename == "Bus 6 Cornaredo.txt" and filename == "Bus 6 Lugano Stazione.txt": 
     if day == "Sunday": 
      return "There are no buses this day for Bus 6" 
    else: 
     for line in lines[start:stop]: 
      line = line.replace('\n','') 
      line = line.replace(" ","") 
      line = line.split(".") 
      key = line[0] 
      if len(line) == 2: 
       d[key] += [line[1]] 
     d = dict(d) 
    for key,value in d.items(): 
     if value not in result.values(): 
      result[key] = value 
    print(result) 
except IOError: 
    print("File not found") 
    program() 

가 ..... 마지막에 인쇄 내가 복귀 기능을 필요로하는 기능입니다

+0

[사전에서 중복 제거]의 중복 가능성 (http://stackoverflow.com/questions/8749158/removing-duplicates-from -dictionary) – ArtOfWarfare

+2

다른 솔루션을 시도 할 때 무엇이 ​​잘못 되었습니까? – Luigi

+0

@ pp94 - 질문을 읽었습니다. 그것이 내가 당신이 복제물을 게시했다는 사실을 확인할 수 있었던 방법입니다. 이전 솔루션이 어떻게 도움이되지 않았는 지에 대한 세부 정보를 제공하지 않으면 중복 게시 이외의 작업을 수행하지 않은 것입니다. – ArtOfWarfare

답변

2

당신은 당신의 결과를 저장하기 위해 새로운 사전을 확인해야합니다.

def getUniqueItems(d): 
    result = {} 
    for key,value in d.items(): 
    if value not in result.values(): 
     result[key] = value 
    print result 
+0

네, 똑같은 생각을했고 리턴 값을 사용하는 함수에서 작동하지만 반환 값 대신에 동일한 동일한 함수 (복사하여 붙여 넣기)를 사용하면 결과가 출력됩니다. 위를 볼 수 있습니다 – pp94

+0

그리고 왜 이해가 안 돼요. 동일한 동일 코드의 복사하여 붙여 넣기입니다. – pp94

+0

getUniqueItems 스 니펫을 실행하기 전에 값을 반환합니까? 그러면 스 니펫이 절대 실행되지 않습니다. – MeetTitan

관련 문제