如何使用字典查找替换列表中的元素(以dict中的值列出)

2024-06-08 21:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的代码中,我希望为dict的值列表中的每个值返回键。 对于下面的代码,我得到了返回的category列表,它比我的creditaccounts列表长。 预期的结果是:

category = ['supermarket', 'supermarket', 'unknown', 'self', 'unknown']

我与循环和“未知”元素斗争

creditaccounts = ['ALBERT HEIJN 1654 ROTTERDAM NLD', 'Jumbo 199730 TILBURG NLD','10-04-14 22:38 GELDAUTOMAAT', 'ING Bank', 'Desposit']

self = ['ING Bank', 'Van Bonusrenterekening']
bank = ['Kosten OranjePakket']
supermarket = ['ALBERT HEIJN 1654 ROTTERDAM NLD', 
                'Jumbo 199730 TILBURG NLD', 'Albert Heijn 1617', 
                'Jumbo Rotterdam ROTTERDAM NLD',
                'DIRK VDBROEK FIL4014 ROTTERDAM']

dict_cat = {'self' : self
            ,'bank' : bank
            , 'supermarket': supermarket}

category = []

for creditaccount in creditaccounts:
    for cat, val in dict_cat.items():
        if creditaccount in val:
            category.append(cat)
        else:
            category.append('unknown')
            
category

Tags: 代码inself列表dictunknowncatbank
3条回答

我想现在应该可以了

代码语法

for cat in dict_cat.keys():
    for creditaccount in creditaccounts:
        if creditaccount in dict_cat[cat]:
            category.append(cat)
        else:
            category.append('unknown')

解释

您要查找的是检查dict_cat的每个list中的creditaccounts

如果找到的值追加“此列表的dict键”,否则追加“未知”

输出

['unknown', 'unknown', 'unknown', 'self', 'unknown', 'unknown', 
'unknown', 'unknown', 'unknown', 'unknown', 'supermarket', 
'supermarket', 'unknown', 'unknown', 'unknown']

[Program finished]

According to this results,

self [list]: only element[3] found into the `creditsaccounts`.

Bank [list]: no value matched with the `creditsaccounts` list, so the whole values appeneded as 'unknown'.

supermarket [list]: its elements -> element[0], element[1].
  1. 或者您可以运行此代码来实现您的目标
creditaccounts = ['ALBERT HEIJN 1654 ROTTERDAM NLD', 'Jumbo 199730 TILBURG NLD','10-04-14 22:38 GELDAUTOMAAT', 'ING Bank', 'Desposit']

self = ['ING Bank', 'Van Bonusrenterekening']
bank = ['Kosten OranjePakket']
supermarket = ['ALBERT HEIJN 1654 ROTTERDAM NLD', 
                'Jumbo 199730 TILBURG NLD', 'Albert Heijn 1617', 
                'Jumbo Rotterdam ROTTERDAM NLD',
                'DIRK VDBROEK FIL4014 ROTTERDAM']

dict_cat = {'self' : self
            ,'bank' : bank
            , 'supermarket': supermarket}

category = []
for creditaccount in creditaccounts:
    node = False
    for k, v in dict_cat.items():
        if creditaccount in v:
            category.append(k)
            node = True
    if node == False:
        category.append('unknown')
    
            
category

在内部循环中有一个if-else语句,在else语句中,将“unknown”添加到列表中。如果条件不匹配,则会在每次迭代中追加“未知”
尝试打破循环,然后选择其他:

creditaccounts = ['ALBERT HEIJN 1654 ROTTERDAM NLD', 'Jumbo 199730 TILBURG NLD','10-04-14 22:38 GELDAUTOMAAT', 'ING Bank', 'Desposit']

self = ['ING Bank', 'Van Bonusrenterekening']
bank = ['Kosten OranjePakket']
supermarket = ['ALBERT HEIJN 1654 ROTTERDAM NLD', 
                'Jumbo 199730 TILBURG NLD', 'Albert Heijn 1617', 
                'Jumbo Rotterdam ROTTERDAM NLD',
                'DIRK VDBROEK FIL4014 ROTTERDAM']

dict_cat = {'self' : self
            ,'bank' : bank
            , 'supermarket': supermarket}

category = []

for creditaccount in creditaccounts:
    for cat, val in dict_cat.items():
        if creditaccount in val:
            category.append(cat)
            break
    else:
        category.append('unknown')

相关问题 更多 >