字典/地图/哈希的Python命名约定

pok*_*tad 38 python mapping dictionary naming-conventions

虽然其他问题已经解决了更广泛的序列模块类别,但我提出这个非常具体的问题:

"你为字典使用什么命名约定?为什么?"

我一直在考虑的一些命名约定样本:

# '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}
Run Code Online (Sandbox Code Playgroud)

不要因为"因为我的工作告诉我"而回答"为什么",而不是非常有帮助.推动选择的原因更为重要.除了可读性之外,字典命名约定还有其他任何好的注意事项吗?

编辑:

选择答案: value_key_map

选择答案的原因:允许代码审阅者快速,轻松地找出地图的关键字和值,以及它是一张地图而无需查看其他任何地方.

DSb*_*ard 17

key_to_value例如,surname_to_salary当代码中存在密切相关的地图时,它们可能很有用:a到b,b到a,c到b等.

  • 我最近遇到了一个类似的 C# 问题,其中 [an answer](http://stackoverflow.com/a/4330705/945456) 建议了 `values_by_key`,这似乎是另一个不错的选择。 (5认同)
  • 这也是我的方法。* _to_ *命名约定迅速表明它是字典,因此不需要* _map。它还给阅读提供了一个很好的微积分。苹果= oranges_to_apples [my_orange]。 (2认同)

vir*_*tor 7

我似乎从来没有像你提出的那样命名他们(即保持一种方式).当我能找到哈希的"专有名称"时,它似乎更加清晰.它可能是"person_details"或"file_sizes"或"album_tracks"等(尽管最后2个似乎有key_value名称,第一个稍微少一点).在极少数情况下,它会是key_value_map,或者value_key_map重要的是它是一张地图.

我永远不会假设任何命名方案.有时价值是你所追求的,有时是关键.我的偏好是"自然名称".

  • +1 value_key_map直截了当,非常易读. (2认同)
  • 为什么不选择key_value_map?这很自然,只需在Google中搜索“ key_value_map”和“ value_key_map”(带引号)即可。 (2认同)

Skl*_*vit 7

values_by_key

  1. 它并不像value_key_map:您不能混淆什么是值名称和什么是键名称
  2. 它不直接命名类型——python 样式命名


unu*_*tbu 6

我认为在字典中的值之后命名字典是有意义的,并删除任何对键的提及。毕竟,假设您命名得很好,您将在类似的情况下使用字典values[key],这样可以完全清楚键是什么key

  • @pokstad:是的,我明白你在说什么。但是,如果您查看标准库,它的字典似乎仅以“values”命名,而不是更冗长的“values_key_map”。例如,“sys.modules”或“locals()”。至少开发人员认为这似乎是最好的方式。也许一些文档也能有所帮助。 (2认同)

Ter*_*its 5

我将与迄今为止的许多答案(包括所选答案)进行对比并说:

我避免将类型引用(例如dict或 )添加map到变量名称中。对我来说,它感觉太像匈牙利表示法了,感觉非常反Python。

回答我使用什么的问题:

values我使用、values_by_key或形式的名称values_for_key,以读起来最自然的为准。