我有一个元组列表,例如:
tuplist = [('New York', 546), ('Chicago', 675)]
并根据[0]索引添加到列表或总和的新元组:
tup3 = ('New York', 655)
tup4 = ('Los Angeles', 1273)
获得:
[('New York', 1201), ('Chicago', 675), ('Los Angeles', 1273)]
我将这些列表创建为dict中的增长值,因为我循环使用CSV。因此,如果以上代表{'Apples': [(City1, Number1), (City2, Number2)]}
,我目前使用:
if fruit not in city_fruitd:
city_fruitd[fruit] = [(city, count)]
else:
city_fruitd[fruit] += [(city, count)]
如何检查现有城市并相应地总结城市是否已存在?
答案 0 :(得分:1)
您想要检查城市在城市列表中的情况:
city in [x[0] for x in city_fruitd[fruit]]
然后找到这个城市指数
index = [city_fruitd[fruit].index(x) for x in city_fruitd[fruit] if city == x[0]][0]
并为其指定附加值
city_fruitd[fruit][index] = [(city, city_fruitd[fruit][index][1] + count)]
所以:
if fruit not in city_fruitd:
city_fruitd[fruit] = [(city, count)]
elif city in [x[0] for x in city_fruitd[fruit]]:
index = [city_fruitd[fruit].index(x) for x in city_fruitd[fruit] if city == x[0]][0]
city_fruitd[fruit][index] = [(city, city_fruitd[fruit][index][1] + count)]
else:
city_fruitd[fruit] += [(city, count)]
答案 1 :(得分:1)
以下是使用defaultdict的方法,如评论中所述:
from collections import defaultdict
#Initialize the defualt dict
tupdict = defaultdict(int)
#Add existing tuple list to default dict
tuplist = [('New York', 546), ('Chicago', 675)]
tupdict.update(tuplist)
#Add tuples one at a time to tupdict
tup3 = ('New York', 655)
tup4 = ('Los Angeles', 1273)
#Simple function to make it easier to add tuples
def add_tup(tupdict, to_add):
k,v = to_add
tupdict[k] += v
add_tup(tupdict, tup3)
add_tup(tupdict, tup4)
#Convert dict back to tuples
tuplist = tupdict.items()
print(tuplist)
输出:
[('New York', 1201), ('Los Angeles', 1273), ('Chicago', 675)]