如何在python中添加两个列表中重复出现的元素

如何在python中添加两个列表中重复出现的元素,python,python-2.7,logic,Python,Python 2.7,Logic,我有 这里, 我想要一本像 A=3, B=4 ,C=5, D =6, B=5. C=3 编辑:你应该确保这两个列表的长度相同…我将留给你去做。有一个很棒的工具叫做谷歌……它已经存在了一段时间;) 尝试这样做: filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C'] filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3] time_per_screen = {} for a, b in zip

我有

这里,

我想要一本像

 A=3, B=4 ,C=5, D =6, B=5. C=3
编辑:你应该确保这两个列表的长度相同…我将留给你去做。有一个很棒的工具叫做谷歌……它已经存在了一段时间;)

尝试这样做:

filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C']
filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3]
time_per_screen = {}
for a, b in zip(filtered_symbolic_path, filtered_symbolic_path_times):
    time_per_screen[a] = b
这将增加一个键的值,若它已经存在于字典中,否则它将创建一个新的键值对

filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C']
filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3]
time_per_second = {}
for a, b in zip(filtered_symbolic_path, filtered_symbolic_path_times):
    try:
        time_per_screen[a] += b
    except KeyError:
        time_per_screen[a] = b
您需要添加
if-else
以迭代方式添加

或者干脆

filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C']
filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3]
mydict={}
for i,j in zip(filtered_symbolic_path,filtered_symbolic_path_times):
    if not mydict.has_key(i):
        mydict[i]=j
    else:
        mydict[i]=j+mydict[i]

计数任务最好是用计算机处理。创建一个计数器并继续将对追加到计数器。最后,从计数器创建一个字典,它是您想要的输出

示例代码 样本输出
这是一个简单的字典结构,在许多地方解释了无数次。+1要关闭命名变量
dict
shadows内置
dict
(字典构造函数),请选择其他名称(例如
mydict
)。编写
i not in mydict
也比编写
not mydict要好,因为后者在Python 3中不再可用
mydict[i]=j+mydict[i]
可以缩短为
mydict[i]+=j
。Bare
except
可以捕获比预期更多的异常。最好提供异常的名称(
KeyError
)。或者使用@vks answer中的
setdefault
,避免捕获所有异常。OP想要用相同的字母对数字求和,你的代码不会这样做。@AudriusKažukauskas你是对的,我错过了。
filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C']
filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3]
time_per_second = {}
for a, b in zip(filtered_symbolic_path, filtered_symbolic_path_times):
    try:
        time_per_screen[a] += b
    except KeyError:
        time_per_screen[a] = b
filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C']
filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3]
mydict={}
for i,j in zip(filtered_symbolic_path,filtered_symbolic_path_times):
    if not mydict.has_key(i):
        mydict[i]=j
    else:
        mydict[i]=j+mydict[i]
filtered_symbolic_path = ['A', 'B', 'C', 'D', 'B', 'C']
filtered_symbolic_path_times = [ 3, 4, 5, 6, 5, 3]
mydict={}
for i,j in zip(filtered_symbolic_path,filtered_symbolic_path_times):
    mydict.setdefault(i,0)
    mydict[i]=j+mydict[i]
from collections import Counter
for p, t in zip(filtered_symbolic_path, filtered_symbolic_path_times):
    c.update({p:t})
>>> dict(c)
{'A': 3, 'C': 8, 'B': 9, 'D': 6}