关于dictionary:python:基于单独的dic(separate dict )t重写单个dict键

python: override a single dict key based on a separate dict

本问题已经有最佳答案,请猛点这里访问。

我敢肯定这里有这样的问题,但我似乎找不到。我有一本叫query的字典:

1
query = {'day': 0, 'item': 'Chipotle'}

以及映射字典:

1
day_mapping = {0:2, 1:3, 2:4, 3:5, 4:6, 5:7, 6:1}

我需要重写query以根据映射生成以下字典:

1
query = {'day': 2, 'item': 'Chipotle'}

注:query可能包含键day也可能不包含键day,因此以下内容不应返回错误:

1
query = {'item': 'Chipotle'}

这是我到目前为止想出来的,但必须有更好的方法来使用列表理解或其他东西:

1
2
3
for k, v in query.items():
    if k == 'day':
        query[k] = day_mapping[v]

原因是,对于python的calendar库和mongodb的aggregation框架,天数的数字表示是不同的。有点烦人,但我敢肯定到处都是这样。


是的tryto replace它。这一不必要的avoids哈希(相对于来使用if 'day' in query:)或链过的字典和这些Pythoneafp原则: </P >

1
2
3
4
try:
    query['day'] = day_mapping[query['day']]
except KeyError:
    pass

你可以使用dict.get(..)to check for the在场院'day'键在你的dict为: </P >

1
2
3
4
5
6
query = {'day': 0, 'item': 'Chipotle'}
day_mapping = {0:2, 1:3, 2:4, 3:5, 4:6, 5:7, 6:1}

day = query.get('day')  # returns `None` if 'day' key not found in `dict`
if day is not None:
    query['day'] = day_mapping[day]

更新的值query字典在以上的实例将是: </P >

1
{'day': 2, 'item': 'Chipotle'}