使用Python的collections.MutableMapping.items()方法随机生成20个键值对示例
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内置的字典类型,效果是一样的。
