簡體   English   中英

如何使用字典操作字符串中每個元素的列表?

[英]How to use a dictionary to manipulate a list per element within a string?

我有一個清單和一個字典:

list1 = ['C1','C1C2C3C4','C3C4C5','C2C4C5']
dict1 = {'C2C4':1, 'C3':1}

我希望掃描列表,並且即使字符串為C2C3C4C5,如果字符串中彈出C2C4,因為它包含C2 C4,我希望它在列表中轉為1。 如果C3出現在任何字符串中,那么對於C3可以說相同,那么我希望它在列表中變成1,而當C3在C3C4C5中出現時,它也應該變成1,即得到以下輸出:

list1 = [0,1,1,1]

我一直在這個網站上找到這種方法:

result = [(lambda x:0 if not x else min(x))([b for a, b in dict1.items() if i in a]) for i in list1]

但這在這種情況下不起作用,因為它不會拾取字符串中的不同組件,因此輸出:

Results = [0, 0, 0, 0]

........有人可以幫忙嗎?

您可以將listcomp與一個小的輔助函數一起使用:

import re

list1 = ['C1', 'C1C2C3C4', 'C3C4C5', 'C2C4C5']
dict1 = {'C2C4': 1, 'C3': 1}

def func(s):
    for k, v in dict1.items():
        if all(i in s for i in re.findall('\w\d', k)):
            return v
    else:
        return 0

[func(i) for i in list1]
# [0, 1, 1, 1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM