python字典存储省份与城市_在Python中存储字典路径

根据您的需要,最简单的选项可能是使用元组作为字典键而不是嵌套字典:

kidshair['allkids', 'child3', 'hair']

mypath = ('allkids', 'child3', 'hair')

kidshair[mypath]

唯一的问题是你无法获得字典的一部分,因此,例如,你不能(轻松/有效地)访问与’child3’有关的所有内容.根据您的使用情况,这可能是也可能不适合您.

使用当前结构的替代方法是执行以下操作:

>>> from functools import partial

>>> test = {"a": {"b": {"c": 1}}}

>>> def itemsetter(item):

... def f(name, value):

... item[name] = value

... return f

...

>>> mypath = partial(itemsetter(test["a"]["b"]), "c")

>>> mypath(2)

>>> test

{'a': {'b': {'c': 2}}}

这里我们创建一个函数itemsetter(),它(在operator.itemgetter()的脉络中)为我们提供了一个函数,用于设置给定字典中的相关键.然后我们使用functools.partial生成此函数的一个版本,其中包含我们想要预先填充的键.它也不是mypath =蓝色,但它并不坏.

如果您不想打扰与运算符模块一致的内容,您可以简单地执行以下操作:

def dictsetter(item, name):

def f(value):

item[name] = value

return f

mypath = dictsetter(test["a"]["b"], "c")

mypath(2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值