python - 在二维列表中搜索一维列表的元素
问题描述
我有两个列表,一个是形式:
A = ["qww","ewq","ert","ask"]
B = [("qww",2) ,("ert",4) , ("qww",6), ("ewq" , 5),("ewq" , 10),("ewq" , 15),("ask",11)]
我必须进行处理以使最终输出为
C = A = [("qww",8),("ewq",20),("ert",4),("ask",11)]
为此,我编写了代码:
# in code temp_list is of form A
# in code total_list is of form B
# in code final is of form C
def ispresent(key,list):
for qwerty in list:
if qwerty == key:
return 1
else:
return 0
def indexreturn(key,list):
counter = 0
for qwerty in list:
if qwerty != key:
counter = counter + 1
else:
return counter
def mult_indexreturn(key,list):
for i in range(len(list)):
if key == list[i][0]:
return i
final = map(lambda n1, n2: (n1,n2 ), temp_list,[ 0 for _ in range(len(temp_list))])
for object2 in total_list:#****
for object1 in temp_list:
if object2 == object1:
final[ indexreturn(object2,final) ][1] = final[ indexreturn(object2, final) ][1] + object2[mult_indexreturn(object2,total_list)][1]#total_list[ mult_indexreturn(object2,total_list) ][1]
print(final)
它应该以 C 类型列表的形式给出输出,但除了 C = [("qww",0),("ewq",0),("ert",0),("ask",0)]
根据我的说法,主要问题在于我的循环部分(带有****注释),逻辑或其他问题是否存在问题。我提供了很多代码,以便您了解我的代码是如何工作的
解决方案
您可以使用该方法构建一个字典fromkeys()
,然后您可以使用for
循环来累积整数:
A = ["qww","ewq","ert","ask"]
B = [("qww",2) ,("ert",4) , ("qww",6), ("ewq" , 5),("ewq" , 10),("ewq" , 15),("ask",11)]
C = dict.fromkeys(A, 0)
# {'qww': 0, 'ewq': 0, 'ert': 0, 'ask': 0}
for k, v in B:
C[k] += v
C = list(C.items())
# [('qww', 8), ('ewq', 30), ('ert', 4), ('ask', 11)]
推荐阅读
- reactjs - 组件仅在第二次单击后才更新有效
- javascript - 为什么不能设置解构的 html 元素的值?
- node.js - 等待数据库连接
- django - 502 错误网关 nginx/1.4.6 (Ubuntu)
- python - 循环完成时计算程序中断
- python - 通过 EntryBoxes 向嵌套字典添加键和值,并通过 Combobox 访问它
- python - 在 Python 中 @abstractmethod 函数前添加 @property 的用法
- bash - bash:在后台使用afplay而不打印任何东西
- ios - 指南 5.1.2 - 法律 - 隐私 - 数据使用和共享 - 应用拒绝
- php - 用逗号分隔类别