如何在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
。Bareexcept
可以捕获比预期更多的异常。最好提供异常的名称(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}