[英]Python comparing two list of tuple elements
我必须比较两个元组元素列表,并结合一些元素本身的数学计算。
更准确地说,我有以下列表, list_1
每个元组都代表一个字符,它的频率为文本ex。 ("a" : "10)
, list_2
每个元组list_2
代表一个字符的二元组,并且它们的频率进入同一文本,例如("a", "b" , "2")
:
list_1=[("a","10"), ("b","5"), ("c","3"),("d","1")]
list_2= [("a", "b", "4"), ("b","c","1")]
我需要遍历两个列表,并且如果list_2
的字符和list_1
的字符之间存在匹配,我的目标是制作以下analisys:
x= ("a","10")*("b","5")/("a","b","4")= 10*5/4
我希望我对问题的解释很清楚。
尝试这个,
list_1=[("a","10"), ("b","5"), ("c","3"),("d","1")]
list_2= [("a", "b", "4"), ("b","c","1")]
# Convert list_1 into a dict
d = {t[0]:int(t[1]) for t in list_1}
result = [d.get(t[0], 0)*d.get(t[1], 0)*1.0/int(t[2]) for t in list_2]
print(result)
#[12.5, 15.0]
@sparkandshine是更好的解决方案,但为清楚起见,对于那些不熟悉Python的新手,这是一种冗长的方法:
def compute(bigrams, table):
"""Yield a resultant operation for each bigram."""
for bigram in bigrams:
# Get values and convert strings
x = int(table[bigram[0]])
y = int(table[bigram[1]])
z = int(bigram[2])
operation = (x * y) / z
yield operation
list(compute(list_2, dict(list_1)))
# [12.5, 15.0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.