python - How can I make a dictionary with a single value from repeated numbers in a csv file -
i new python , want create dictionary csv file. data has format like:
c1 c2 p trade ger usa 1 100 ger ita 1 80 jpn ita 2 120 usa gbr 1 70 dnk can 2 100 usa dnk 2 70 dnk ger 1 40 fra ger 4 50 usa ger 6 80 i intend create dictionary keys countries (c1 , c2) , values products(p). this:
dic_c1c2_products={"ger": 1, 4,6 "usa":1,2,6 "ita": 1,2, "jpn": 2 "gbr":1, dnk:"2,1 "can":2 "fra:4} i have written following code not work properly:
rfile = open('filepath','r') dic_c1c2_products = {} in rfile : lns = i.strip().split(',') c1 = lns[0] c2 = lns[1] p = lns[2] if not dic_c1c2_products.has_key(c1) , not dic_c1c2_products.has_key(c2): dic_c1c2_products[c1] = [p,] dic_c1c2_products[c2]=[p,] elif dic_c1c2_products.has_key(c1) , not dic_c1c2_products.has_key(c2): dic_c1c2_products[c2]=[p,] if p not in dic_c1c2_products[c1]: dic_c1c2_products[c1].append(p) elif not dic_c1c2_products.has_key(c1) , dic_c1c2_products.has_key(c2): dic_c1c2_products[c1] = [p,] if p not in dic_c1c2_products[c2]: dic_c1c2_products[c2].append(p) elif dic_c1c2_products.has_key(c1) , dic_c1c2_products.has_key(c2): if p not in dic_c1c2_products[c2] , dic_c1c2_products[c1]: dic_c1c2_products[c1].append(p) dic_c1c2_products[c2].append(p) any appreciated.
you can use collections.defaultdict :
import csv collections import defaultdict d= defaultdict(set) open('eggs.csv', 'rb') csvfile: spamreader = csv.reader(csvfile, delimiter=',') row in spamreader: i,j,k=row[:3] d[i].add(k) d[j].add(k) all need create defaultdict set object value loop on rows , insert 1st , 2nd key , add 3rd element set value.
Comments
Post a Comment