f1_in = open("f1.csv","r")
f1_dict = {}
for line in f1_in:
l = line.split()
f1_dict[l[0].strip()] = l[1].strip()
f1_in.close()
f2_in = open("f2.csv","r")
f2_dict = {}
for line in f2_in:
l = line.split()
f2_dict[l[0].strip()] = l[1].strip()
f2_in.close()
f_same = open("same.txt","w")
f_different = open("different.txt","w")
for k1 in f1_dict.keys():
if k1 in f2_dict.keys() \
and f2_dict[k1] == f1_dict[k1]:
f_same.write("{0}, {1}\n".format(str(k1)+" "+str(f1_dict[k1]),
str(k1)+" "+str(f2_dict[k1])))
elif not k1 in f2_dict.keys():
f_different.write("{0}, {1}\n".format(str(k1)+" "+str(f1_dict[k1]),
"------"))
elif not f2_dict[k1] == f1_dict[k1]:
f_different.write("{0}, {1}\n".format(str(k1)+" "+str(f1_dict[k1]),
str(k1)+" "+str(f2_dict[k1])))
f_same.close()
f_different.close()
편집 : 가 키를 반복하기 전에, (for k1 in f1_dict.keys()
를) 키에 의해 딕셔너리를 정렬하려면 :
# get the keys as a list
my_keys = f1_dict.keys()
# sort it
my_keys.sort()
# use sorted list
for k1 in my_keys:
이하여 딕셔너리를 정렬하려면 키를 반복하기 전에 값 :
# return a list of tuple : [(key1,value1),(key2,value2)]
my_zip = zip(f1_dict.keys(), f1_dict.values())
# now you have a list you can sort it :
my_sorted_list = sorted(my_zip, key=lambda value, value[2])
key=lambda value, value[2]
my_zip
은 목록의 각 튜플의 두 번째 값을 사용하여 정렬됩니다.
# use sorted list
for t in my_sorted_list:
# t is a tuple
k1 = t[0]
value = t[1]
출처
2014-04-09 11:57:34
cft
https://docs.python.org/2/library/csv.html 및 https://docs.python.org/2/library/functions.html#map 사용 방법보기 너 자신을 지치고 싶다. 나는 올바른 방향으로 당신을 가리키고있다. 나는이 질문을 광범위하게 다루기 때문에 투표를하고있다. 그리고 적어도 당신 스스로 문제를 해결하려고 노력해야한다. – Torxed
예를 들어 'A': 20000'과 같은 키를 사용하여 dict에 값을 입력 한 다음 두 번째 파일의 값을 비교하고 그 값이 dict 값보다 큰 경우 새 값으로 바꾸십시오. – Pythonizer
이 스크립트를 사용해 보았습니다 오기 CSV FILE1 = 개방 ("1.csv", "R") reader1 = csv.reader (FILE1) reader1.next() 파일 2 = 개방 ("2.csv", "R") reader2 = csv.reader (파일 2) reader2.next() FILE3 = 개방 ("file3.txt", "w") file4 = 개방 ("file4.txt", "w"),515, file1.seek (0,0) 리스트 1에 대한 I file2.seek (0,0) 목록 1 = file1.readlines() file2.readlines리스트 2 =() : J에 대한 리스트 2 : 경우 나 == J : file3.write (I) file3.write (j) 다른 : file4.write (I) file4.write (j) 하지만 ITZ 복용 헤더 또한 플러스 비교할 수없는 파일 비교가 모두 수행되었습니다 – user3514648