Python 字典/映射/哈希的命名约定

70 投票
7 回答
44149 浏览
提问于 2025-04-15 20:11

虽然之前有其他问题讨论过关于序列模块的更广泛的命名规则,但我想问一个非常具体的问题:

“你们在字典命名时用什么规则,为什么?”

我考虑过一些命名规则的例子:

# 'value' is the data type stored in the map, while 'key' is the type of key
value_for_key={key1:value1, key2,value2}
value_key={key1:value1, key2,value2}
v_value_k_key={key1:value1, key2,value2}

别用“因为我的工作要求我这样做”来回答“为什么”,这没什么帮助。选择命名规则的原因更重要。除了可读性,还有其他好的考虑因素吗?

编辑:

选择的答案:value_key_map

选择这个答案的原因:让代码审查者能够快速轻松地理解一个映射的键和值,并且能知道它是一个映射,而不需要去查找其他地方。

7 个回答

11

values_by_key

  1. 这个名字没有value_key_map那么让人困惑:你不会搞混什么是值的名字,什么是键的名字。
  2. 它没有直接给类型命名——这是一种Python风格的命名方式。
41

key_to_value,比如说 surname_to_salary,在代码中当有多个紧密相关的映射时会很有用:比如说a对应b,b又对应a,c又对应b等等。

16

我从来不会像你提到的那样给它们起名字(也就是保持一种方式)。我觉得给哈希表找一个“合适的名字”会更清楚明了。比如可以叫“person_details”(个人信息)或者“file_sizes”(文件大小)或者“album_tracks”(专辑曲目)等等。(虽然最后两个名字看起来像是键值对的名字,第一个名字就没那么明显了)。在少数情况下,如果它是一个映射,我会用 key_value_map 或者 value_key_map 来命名。

我从来不会假设有什么命名规则。有时候你关注的是值,有时候你关注的是键。我更喜欢用“自然的名字”。

撰写回答