欢迎访问宙启技术站
智能推送

Python中的collections.MutableMapping.items()方法产生的20个随机键值对

发布时间:2024-01-12 06:11:20

collections.MutableMapping是Python中的一个抽象基类 (Abstract Base Class,缩写为ABC),用于表示可变映射类型。MutableMapping继承了collections.abc.Mapping类,同时实现了一些可变映射的基本方法。其中,items()方法是MutableMapping提供的一个用于获取映射中所有键值对的方法。

items()方法返回一个包含映射中所有键值对的可迭代对象。每个键值对由一个形如(key, value)的元组表示。下面是一个使用items()方法的简单例子:

from collections.abc import MutableMapping

class MyMapping(MutableMapping):
    def __init__(self):
        self._data = {}

    def __getitem__(self, key):
        return self._data[key]

    def __setitem__(self, key, value):
        self._data[key] = value

    def __delitem__(self, key):
        del self._data[key]

    def __iter__(self):
        return iter(self._data)

    def __len__(self):
        return len(self._data)


if __name__ == '__main__':
    my_mapping = MyMapping()
    my_mapping['a'] = 1
    my_mapping['b'] = 2
    my_mapping['c'] = 3

    for key, value in my_mapping.items():
        print(f'key: {key}, value: {value}')

在上面的例子中,首先定义了一个自定义的映射类MyMapping,该类继承了MutableMapping,并实现了必要的基本方法。在这个例子中,实际上使用了一个字典来保存数据,因此所有的键值对都存储在self._data字典中。

接下来,创建了一个实例my_mapping,并向实例中添加了三组键值对。最后,通过使用items()方法,打印出了所有键值对的内容。

执行上述代码,将输出以下结果:

key: a, value: 1
key: b, value: 2
key: c, value: 3

上述示例展示了如何使用items()方法来获取映射中的所有键值对,并遍历这些键值对进行操作。

为了生成20个随机的键值对,我们可以对上述示例进行修改。我们可以使用Python中的random模块,以及一个自定义的随机字符串生成函数,来生成随机的键值对。修改后的代码如下:

import random
import string
from collections.abc import MutableMapping

def generate_random_string(length):
    """生成一个指定长度的随机字符串"""
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for _ in range(length))

class MyMapping(MutableMapping):
    def __init__(self):
        self._data = {}

    def __getitem__(self, key):
        return self._data[key]

    def __setitem__(self, key, value):
        self._data[key] = value

    def __delitem__(self, key):
        del self._data[key]

    def __iter__(self):
        return iter(self._data)

    def __len__(self):
        return len(self._data)


if __name__ == '__main__':
    my_mapping = MyMapping()

    # 生成20个随机的键值对
    for i in range(20):
        key = generate_random_string(5)
        value = random.randint(0, 100)
        my_mapping[key] = value

    # 打印所有键值对
    for key, value in my_mapping.items():
        print(f'key: {key}, value: {value}')

在上述示例中,我们定义了一个名为generate_random_string的辅助函数,用于生成指定长度的随机字符串。然后,在主程序中,我们生成了20个随机的键值对,其中键是由generate_random_string生成的,值是在0到100之间的随机整数。

当我们运行上述代码,将得到类似以下的输出结果:

key: sskxh, value: 74
key: mpvei, value: 56
key: wlvjx, value: 96
key: wbcmd, value: 68
key: djtey, value: 24
key: mmave, value: 44
key: izjnr, value: 58
key: hhdzk, value: 32
key: lnpjx, value: 69
key: zjbfv, value: 62
key: qaxei, value: 38
key: vmoze, value: 70
key: gqvak, value: 10
key: cqdbc, value: 26
key: ejpqe, value: 69
key: luisr, value: 44
key: jwbme, value: 11
key: ptfsa, value: 89
key: jqgbe, value: 91
key: uvqel, value: 8

上述示例展示了如何使用items()方法来获取映射中的所有键值对,并且在生成随机键值对的过程中进行了示范。