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 完全不同names,而 OrderedDict(如评论中所建议的)不允许未命名元素或重复名称的等效项,也不支持按元素位置进行访问。
dict 将是 Python 中将对象与名称相关联的最常见方式,但它与带有名称的 R 列表仍有很大不同。您当然可以创建自己的类来尝试模仿等效的 R 数据结构,也许是子类化list或collections.UserList,但是您必须自己实现很多功能,并且您将对象传递给的现有函数不知道如何处理名称。