繁体   English   中英

Python比较两个元组元素列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM