matlab中结构体和python中字典的异同


    下面的Python(2.5)例子都是源于《Diveinto Python》,以下的Matlab代码都是在Matlab7.0.1下运行通过的:

     Python中定义Dictionary:

>>> d ={"server":"mpilgrim","database":"master"}

     Matlab中创建struct:

>> d = struct('server','mpilgrim','database','master')

     在Python中通过key来查找value:

>>> d["server"]

'mpilgrim'

>>> d["database"]

'master'

     在Matlab中通过字符串形式的fieldname来查找value(Using Dynamic Field Names):

>> d.('server')

ans =

mpilgrim

>> d.('database')

ans =

master

     在Python中不能通过value来获取key:

>>> d["mpilgrim"]

Traceback (innermost last):

 File "<interactive input>", line 1, in ?

KeyError: mpilgrim

     在Matlab中也不行(不能通过value来查找fieldname):

>> d.('mpilgrim')

??? Reference to non-existent field'mpilgrim'.

     在Python中修改已经存在的key的value:

>>> d["database"] ="pubs"

>>> d

{'server': 'mpilgrim', 'database': 'pubs'}

     在Matlab中修改已经存在的field的value:

>> d.('database')='pubs'

d =

     server: 'mpilgrim'

   database: 'pubs'

     在Python中添加新的key-value对:

>>> d["uid"] ="sa"

>>> d

{'server': 'mpilgrim', 'uid': 'sa','database': 'pubs'}

     在Matlab中添加新的field:

>> d.('uid')='sa'

d =

     server: 'mpilgrim'

   database: 'pubs'

        uid: 'sa'

     Python的key是大小写敏感的,Matlab的field name也是大小写敏感的(不举例子了)。

     在Python中删除Dictionary的元素:

>>> d

{'database': 'master', 'uid': 'sa','server': 'mpilgrim'}

>>> del d['uid']

>>> d

{'database': 'master', 'server':'mpilgrim'}

     在Matlab中删除stuct的field:

>> d=struct('database', 'master','uid', 'sa', 'server', 'mpilgrim')

d =

   database: 'master'

        uid: 'sa'

     server: 'mpilgrim'

>> d=rmfield(d,'uid')

d =

   database: 'master'

     server: 'mpilgrim'

     在Python中删除Dictionary所有元素:

>>> d.clear()

>>> d

{}

     在Matlab中删除struct所有field:

>> d=struct()

d =

1x1 struct array with no fields.

     但是两者(Python的Dictionary和Matlab中的struct)还是有许多差异的,例如:

     在Python中,key可以使用多种类型:

>>> d[42] = "douglas"

>>> d

{'server': 'mpilgrim', 'uid': 'sa','database': 'master',

42: 'douglas', 'retrycount': 3}

     在Matlab中,甚至不能用数字作为fieldname:

>> d.123='123'

??? d.123='123'

    |

Error: Missing MATLAB operator.

>> d.(123)='123'

??? Argument to dynamic structure referencemust evaluate to a valid field name.

     以上是对Python的Dictionary和Matlab的struct的简单比较。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值