在Python中添加值或添加新元组

时间:2016-11-16 23:50:16

标签: python list dictionary tuples

我有一个元组列表,例如:

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)]

如何检查现有城市并相应地总结城市是否已存在?

2 个答案:

答案 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)]