楼主:
mantour (朱子)
2016-02-01 01:28:55※ 引述《busystudent (busystudent)》之铭言:
: hi 我想询问list若有重复的标签该如何相加
: 我有三组list,内容为个人所收藏的标签与其收藏次数,如下所示:
: link_a = ['a','b','c']
: bookmark_a = ['1','2','3']
: link_b = ['b','c']
: bookmark_c = ['4','5']
: link_c = ['a']
: bookmark_c = ['6']
: 我想做些计算,得到如下面的结果
: answer_link_all = ['a','b','c']
: answer_bookmark_all = ['7','6','8']
: 其实我一开始是打算 link_a+link_b = ['a','b','c','b','c']后来发现,名称会
: 重复,像是重复出现'b'和'c'之类的,所以打算写一个if判断式,可是考虑到又
: 有bookmark要去计算,就感到怪怪的,请大家给我提示,谢谢
先转换成 dict , 再用set合并重复的key
link_a = ['a','b','c']
bookmark_a = ['1','2','3']
link_b = ['b','c']
bookmark_b = ['4','5']
link_c = ['a']
bookmark_c = ['6']
dict_a = dict(zip(link_a,bookmark_a))
dict_b = dict(zip(link_b,bookmark_b))
dict_c = dict(zip(link_c,bookmark_c))
def count(x):
return sum([ int(dic.get(x,0)) for dic in [dict_a,dict_b,dict_c]])
answer_link_all = list(set(link_a+link_b+link_c))
answer_link_all.sort()
answer_bookmark_all = [ str(count(key)) for key in answer_link_all ]
print answer_link_all
print answer_bookmark_all
供参考