Skip to main content

可以将自身键链接到自身值的高级 Python 字典

项目描述

链接字典

进阶python字典(hash-table),可以把it-self键链接起来,计算成dict的键

安装

使用包管理器pip安装 foobar。

pip install linked-dict

用法

表达式的语法:

{'key' : '...$(expression)$...'}

初始化:

from linked_dict import LinkedDict
from json import dumps

dictionary = LinkedDict({})  # {} - your dict

例子:

简单链接:

example = LinkedDict(
    {
        'a': 5,
        'b': '$(a)$'
    }
)

print(dumps(example))

    {
       'a': 5,
       'b': 5
    }

一键表达。正如你现在所看到的,我在这个表达式之外添加了一个空格,最终的值为字符串:

example = LinkedDict(
    {
        'a': 5,
        'b': '$(a * 2)$ ' # here with a space
    }
)

print(dumps(example))

    {
       'a': 5,
       'b': '10 '
    }

链接其他表达式:

example = LinkedDict(
    {
        'a': 5,
        'b': 100,
        'c': '$(b + d)$',
        'd': '$(b + a)$'
    }
)

print(dumps(example))

    {
        'a': 5,
        'b': 100,
        'c': 205,
        'd': 105
    }

使用所有内置类型:

example = LinkedDict(
    {
        'a': ['one_item'],
        'b': '$(a + ["another_item"])$'
    }
)

print(dumps(example))

    {
        'a': ['one_item'],
        'b': ['one_item', 'another_item']
    }

在表达式中使用您自己的函数:

some_func = lambda arg: arg + 1

example = LinkedDict(
    {
        'a': 5,
        'b': '$(some_func(a))$'
    },
    loc=locals(), # to be able to use your functions
    glob=globals() # to be able to use your functions
) 

print(dumps(example))

    {
       'a': 5,
       'b': 5
    }

改变:

当您更改一个值时,链接它的所有值也会更改它们的值。但是链接只在一个方向上起作用

example = LinkedDict(
    {
        'a': 5,
        'b': '$(a)$'
    }
)
print(example) 
# >>> {'a': 5, 'b': 5}
example['a'] = 'another_val'
print(example)
# >>> {'a': 'another_val', 'b': 'another_val'}
example['b'] = '4'
print(example) 
# >>> {'a': 'another_val', 'b': 4}

# !!! 'b' links 'a', but 'a' doesn't link 'b'

警告:

1. dict 的键只能是字符串

{5: 'abc', True: []} # is prohibited
{'5': 'abc', 'True': []} # is allowed

2.不要使链接循环。字典受此保护,但您会收到错误

贡献:

欢迎请求请求。对于重大更改,请先打开一个问题讨论您想要更改的内容。

请确保根据需要更新测试。

执照

麻省理工学院

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

linked-dict-0.0.2.tar.gz (5.4 kB 查看哈希

已上传 source