什么时候以及为什么我应该使用namedtuple而不是字典?

Jack_of_All_Trades:

可能重复:
Python中的“命名元组”是什么?

在什么情况下应使用命名元组?

当我研究它时,它看起来像是一种使元组更像字典的方式。它们与字典相比如何?

命名元组只能使用相同的字典哈希值类型吗?

水果和蔬菜:

dicts中,仅键必须是可哈希的,而不是值。namedtuple没有密钥,因此哈希性不是问题。

但是,它们具有更严格的限制-它们的等效键(“字段名称”)必须是字符串。

基本上,如果您要创建一个类的实例,例如:

class Container:
    def __init__(self, name, date, foo, bar):
        self.name = name
        self.date = date
        self.foo = foo
        self.bar = bar

mycontainer = Container(name, date, foo, bar)

并且在中设置属性后不更改属性__init__可以改用

Container = namedtuple('Container', ['name', 'date', 'foo', 'bar'])

mycontainer = Container(name, date, foo, bar)

作为替代。

当然,您可以创建一堆,dict在每个s中使用相同的键,但是假设您只有有效的Python标识符作为键,并且不需要可变性,

mynamedtuple.fieldname

比...漂亮

mydict['fieldname']

mynamedtuple = MyNamedTuple(firstvalue, secondvalue)

比...漂亮

mydict = {'fieldname': firstvalue, 'secondfield': secondvalue}

最后,namedtuple与常规dicts 不同s是有序的,因此您可以按定义字段的顺序获得项目,与s不同dict

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么时候以及为什么应该使用域服务?

什么时候,在哪里以及为什么我应该对控制结构使用“替代语法”?

什么时候以及为什么我应该使用session_regenerate_id()?

什么时候以及为什么我们应该在角度使用View Encapsulation

我什么时候应该使用 try catch 而不是 then catch?

什么时候应该使用,什么时候应该避免在Python中使用namedtuple?

什么时候以及为什么类型对象比字典更好?

什么时候以及为什么我应该触发pg_stat_reset()?

我什么时候应该使用GROUP BY?

我什么时候应该使用blockingGet?

我什么时候应该使用SynchronousQueue

我什么时候应该使用`sparse`?

我什么时候应该使用FutureBuilder?

我什么时候应该使用.copy()

我应该什么时候使用 JSDocs?

什么时候以及为什么应该使用NSUserDefaults的syncnize()方法?

什么时候以及为什么应该使用apt-get update?

什么时候应该首选Callable而不是Runnable?为什么?

什么时候以及为什么在constexpr中使用static?

什么时候以及为什么使用next_by_code()?

我什么时候应该使用Q.defer以及何时Promise.resolve / reject?

我什么时候应该使用sed和什么时候应该使用awk

我什么时候应该使用 async/await,什么时候应该使用回调 [js]?

什么时候以及为什么我们需要在bash上使用“ wait”命令?

我什么时候应该将npm与“ -g”标志一起使用,为什么?

我什么时候应该使用更具体的原子操作而不是使用 atomicCAS?

什么时候应该使用转义而不是encodeURI / encodeURIComponent?

什么时候应该使用AutoSeededRandomPool(而不是NonblockingRng)?

什么时候应该使用@Component而不是@Service?