如何使用字典查找替换列表中的元素

2024-06-01 14:19:32 发布

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

给出了这个列表

my_lst = ['LAC', 'HOU', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']

我想根据字典值更改其0th1st值:

def translate(my_lst):
    subs = {
        "Houston": "HOU", 
        "L.A. Clippers": "LAC",

    }

所以列表变成:

['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']

Tags: 列表字典mydeftranslatesubslstpm
3条回答

反转dict,然后将查找应用于列表的前两个元素:

subs = {
    "Houston": "HOU", 
    "L.A. Clippers": "LAC",

}

my_lst = ['LAC', 'HOU', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']
my_lst[:2] = map(dict(zip(subs.values(), subs)).get, my_lst[:2])
print my_lst

如果所有值都是唯一的,则应首先反转dict以获得有效的解决方案:

>>> subs = {
...         "Houston": "HOU", 
...         "L.A. Clippers": "LAC",
... 
...     }
>>> rev_subs = { v:k for k,v in subs.iteritems()}
>>> [rev_subs.get(item,item)  for item in my_lst]
['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']

如果只尝试更新选定的索引,请尝试:

indexes = [0, 1]
for ind in indexes:
    val =  my_lst[ind]
    my_lst[ind] = rev_subs.get(val, val)

如果值是唯一的,则可以翻转字典:

subs = {v:k for k, v in subs.iteritems()}

然后,您可以使用.get()从字典中获取值,并使用第二个参数(如果键不在字典中):

print map(subs.get, my_lst, my_lst)

印刷品:

['L.A. Clippers', 'Houston', '03/03 06:11 PM', '2.13', '1.80', '03/03 03:42 PM']

相关问题 更多 >