This question already has answers here:
Return None if Dictionary key is not available
(10个答案)
Does Python have a defined or operator like Perl? [duplicate]
(2个答案)
Make value_counts() return 0 if the value does not occur
(2个答案)
Python: default dict keys to avoid KeyError
(4个答案)
去年关闭。
我遇到了一些城市名称需要重命名的情况,因此我使用了一个dict,其中键是旧的城市名称,值是新的城市名称。但是,仅需要重命名一些城市,因此并非所有可能的城市都在命令中。
我唯一知道的方法是在不需要重命名城市时可以使用KeyError例外,这种方法是可行的,但是我不确定这是否是不好的做法,或者是否存在任何弊端。我有什么想念的吗?
如果
(10个答案)
Does Python have a defined or operator like Perl? [duplicate]
(2个答案)
Make value_counts() return 0 if the value does not occur
(2个答案)
Python: default dict keys to avoid KeyError
(4个答案)
去年关闭。
我遇到了一些城市名称需要重命名的情况,因此我使用了一个dict,其中键是旧的城市名称,值是新的城市名称。但是,仅需要重命名一些城市,因此并非所有可能的城市都在命令中。
我唯一知道的方法是在不需要重命名城市时可以使用KeyError例外,这种方法是可行的,但是我不确定这是否是不好的做法,或者是否存在任何弊端。我有什么想念的吗?
# Set Venue
venue_name = unidecode(cell[2].get_text())
try:
# Correct venue names i.e. Cairns, QLD = Cairns
venue_name = VENUE_NAMES_DICT[venue_name]
except KeyError:
pass
最佳答案
正如@jarmod所建议的,您可以使用标准Dictionary的.get()
方法来提供默认值,以防密钥丢失。没有描述的是,这种方法使您可以通过将venue_name
值传递给.get()
作为默认值,将问题变成一线。
# Set Venue
venue_name = unidecode(cell[2].get_text())
# Correct venue names i.e. Cairns, QLD = Cairns
venue_name = VENUE_NAMES_DICT.get(venue_name, venue_name)
如果
venue_name
作为字典中的键存在,则.get()
将返回所需的新值。如果不存在,则.get()
将不变地返回venue_name
的原始值。这消除了对任何条件逻辑的需求。关于python - 当并非所有值都存在时,将dict作为键使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48142516/