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例外,这种方法是可行的,但是我不确定这是否是不好的做法,或者是否存在任何弊端。我有什么想念的吗?

# 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/

10-11 22:28
查看更多