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

使用Python的collections.MutableMapping.items()方法随机生成20个键值对示例

发布时间:2024-01-12 06:15:56

MutableMapping是一个抽象基类,它定义了可以修改的键值对映射的通用接口。它是collections模块中的一个类,可以用于创建键值对的可变集合。其中,items()方法可以返回映射中所有键值对的列表,每个键值对以元组的形式返回。

下面是一个使用Python的collections.MutableMapping.items()方法随机生成20个键值对的示例:

import random
from collections.abc import MutableMapping

class RandomDict(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)

def generate_random_pairs(n):
    keys = [chr(i) for i in range(ord('A'), ord('Z') + 1)]
    random.shuffle(keys)
    values = list(range(1, n+1))
    random.shuffle(values)
    
    pairs = [(k, v) for k, v in zip(keys, values)]
    return pairs

def generate_random_items(n):
    items = generate_random_pairs(n)
    random.shuffle(items)
    return items

if __name__ == "__main__":
    random_dict = RandomDict()
    items = generate_random_items(20)
    
    for key, value in items:
        random_dict[key] = value
    
    for key, value in random_dict.items():
        print(f"Key: {key}, Value: {value}")

在上述示例中,我们首先定义了一个继承自MutableMapping的自定义类RandomDict。该类是一个字典的子类,实现了MutableMapping的所有方法,即getitem、setitem、delitem、iter和len。这样我们就可以像使用字典一样使用RandomDict类。

接下来,我们定义了generate_random_pairs函数,它用于生成随机的键值对。在这个函数中,我们通过使用random.shuffle函数将字母'A'到'Z'的列表和数字1到n的列表进行随机排序,从而得到随机的键和值。然后,我们使用zip函数将键和值两个列表合并为一个包含键值对的列表。

generate_random_items函数使用generate_random_pairs函数生成了包含20个随机键值对的列表,并使用random.shuffle函数再随机打乱这些键值对的顺序。

最后,在main函数中,我们创建了一个RandomDict的实例random_dict,并通过对items列表进行迭代,将其中的键值对逐一插入random_dict对象。然后,我们再次使用items方法来获取random_dict中的所有键值对,并打印输出它们的键和值。

运行上述代码,可能会得到如下输出结果:

Key: J, Value: 18
Key: P, Value: 15
Key: Q, Value: 14
Key: M, Value: 3
Key: Z, Value: 7
Key: T, Value: 2
Key: G, Value: 9
Key: O, Value: 4
Key: A, Value: 10
Key: Y, Value: 12
Key: X, Value: 19
Key: B, Value: 17
Key: S, Value: 6
Key: L, Value: 1
Key: D, Value: 20
Key: R, Value: 16
Key: C, Value: 13
Key: F, Value: 11
Key: E, Value: 5
Key: I, Value: 8

注意:上述示例中使用了自定义的RandomDict类来实现键值对的存储,你也可以直接使用Python内置的字典类型,效果是一样的。