Python相当于R list()

tej*_*zpr 8 r python-3.x

R的list()也允许标记元素,在Python中是否有相同的方法来实现以下内容?

list("prob", "topTalent", name="Roger")
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 11

https://docs.python.org/3/tutorial/introduction.html上的Python文档暗示您可以使用"[[]创建不同类型的递归结构(具有树特征的结构的正确R项) "运营商:

>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)

我只是一个R家伙,但这似乎意味着Python的"列表"数据类型非常类似于R的列表类型.

要获得命名的"递归"结构,似乎需要使用"字典"(使用侧翼"{","}"创建).

>>> x = {'a':a, 'n':n}
>>> x
{'a': ['a', 'b', 'c'], 'n': [1, 2, 3]}
Run Code Online (Sandbox Code Playgroud)

似乎Python需要其字典条目的名称,而R允许列表中的命名和未命名条目.

>>> x = {'a':a, 'n':n, 'z':[1,2,3], 'zz':{'s':[4,5,6], 'd':['t','y']} }
>>> x
{'a': ['a', 'b', 'c'], 'n': [1, 2, 3], 'z': [1, 2, 3], 'zz': {'s': [4, 5, 6], 'd': ['t', 'y']}}
Run Code Online (Sandbox Code Playgroud)

Python dicts的加入类似于使用R时对项目的访问:

>>> x['zz']
{'s': [4, 5, 6], 'd': ['t', 'y']}
>>> x['zz']['s']
[4, 5, 6] 
Run Code Online (Sandbox Code Playgroud)

  • 作为大多数人都使用Python进行编程而有时却涉足R的人,大多数时候我都是在R中创建命名列表的,我发现自己希望R具有内置的哈希表。如果您要命名,则字典是Python的自然等效项。另一方面,您正确的认为(除了名称部分)Python和R列表在语义上彼此接近。我不太确定为什么您的答案被否决了。对于一个模糊的问题,这是一个很好的答案(+1)。 (2认同)
  • 这有点深奥,但 R 中的环境基本上是哈希映射。请参阅 http://adv-r.had.co.nz/Environments.html 的底部,其中还包括对 [`hash` 包](https://cran.r-project.org/web/packages /hash/index.html) 充分扩展了这个概念。 (2认同)

use*_*ica 5

没有等价物。Python 列表与 R 完全不同names,而 OrderedDict(如评论中所建议的)不允许未命名元素或重复名称的等效项,也不支持按元素位置进行访问。

dict 将是 Python 中将对象与名称相关联的最常见方式,但它与带有名称的 R 列表仍有很大不同。您当然可以创建自己的类来尝试模仿等效的 R 数据结构,也许是子类化listcollections.UserList,但是您必须自己实现很多功能,并且您将对象传递给的现有函数不知道如何处理名称。