Python中的collections.MutableMapping.items()方法产生的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()方法来获取映射中的所有键值对,并且在生成随机键值对的过程中进行了示范。
