我是Python新手,想为我的csv文件创建一个字典。我的数据格式如下:
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
我打算创建一个字典,它的键是国家(c1和c2),值是产品(p)。像这样:
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}
我已经编写了以下代码,但无法正常工作:
rfile = open('filepath','r')
dic_c1c2_products = {}
for i in rfile :
lns = i.strip().split(',')
c1 = lns[0]
c2 = lns[1]
p = lns[2]
if not dic_c1c2_products.has_key(c1) and not dic_c1c2_products.has_key(c2):
dic_c1c2_products[c1] = [p,]
dic_c1c2_products[c2]=[p,]
elif dic_c1c2_products.has_key(c1) and 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) and 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) and dic_c1c2_products.has_key(c2):
if p not in dic_c1c2_products[c2] and dic_c1c2_products[c1]:
dic_c1c2_products[c1].append(p)
dic_c1c2_products[c2].append(p)
任何帮助都将不胜感激。你知道吗
我会使用这里的^{} module 来读取格式,而不是手动拆分。你知道吗
将值收集到集合对象中,以便只获得唯一的值:
如果字典中没有键(
c1
或c2
),则dict.setdefault()
调用插入一个空的set()
对象。你知道吗演示:
您可以使用
collections.defaultdict
:您只需创建一个
defaultdict
,其中set
对象作为其值,然后在行上循环,插入1st和2nd作为键,并将第3个元素添加到set value。你知道吗相关问题 更多 >
编程相关推荐