某银行现有以下用户使用电子银行产品的信息: 用户名 使用的电子银行产品 'u0' 'TV Bank', 'ATM', 'Telphone Bank', 'POS' 'u1' 'Ebank', 'Telphone Bank' 'u2' 'TV Bank', 'POS' 'u3' 'POS', 'Ebank' 'u4' 'POS', 'Ebank', 'ATM' 'u5' 'TV Bank', 'Ebank', 'ATM' 'u6' 'POS', 'Ebank', 'TV Bank' 'u7' 'TV Bank', 'Telphone Bank', 'POS' 'u8' 'MobilePhone Bank', 'Ebank' 'u9' 'Personal Bank', 'Telphone Bank' 'u10' 'Ebank', 'Personal Bank' 将上述信息用字典保存,字典的键为用户名,对应的值为使用的电子银行产品(用元组保存),编程实现下列功能: 1.输入一个用户名,输出其使用的电子银行产品的数量(该用户在字典中不存在时,输出0) 2.统计该银行所有用户共使用了多少种电子产品?并输出产品的名称 3. 统计每种电子银行产品的使用用户数(产品出现一次视作有一个用户使用),按照用户数降序排列 4. 输入查询位次rank,输出用户数量排名前rank位的产品名称及使用用户数。
时间: 2023-06-20 19:09:44 浏览: 60
```python
data = {
'u0': ('TV Bank', 'ATM', 'Telphone Bank', 'POS'),
'u1': ('Ebank', 'Telphone Bank'),
'u2': ('TV Bank', 'POS'),
'u3': ('POS', 'Ebank'),
'u4': ('POS', 'Ebank', 'ATM'),
'u5': ('TV Bank', 'Ebank', 'ATM'),
'u6': ('POS', 'Ebank', 'TV Bank'),
'u7': ('TV Bank', 'Telphone Bank', 'POS'),
'u8': ('MobilePhone Bank', 'Ebank'),
'u9': ('Personal Bank', 'Telphone Bank'),
'u10': ('Ebank', 'Personal Bank')
}
# 1
def get_product_count(username):
if username in data:
return len(data[username])
else:
return 0
# 2
def get_all_products():
products = set()
for value in data.values():
products.update(value)
return len(products), list(products)
# 3
def get_product_users():
product_users = {}
for value in data.values():
for product in value:
if product in product_users:
product_users[product] += 1
else:
product_users[product] = 1
return sorted(product_users.items(), key=lambda x: x[1], reverse=True)
# 4
def get_top_products(rank):
product_users = get_product_users()
result = []
for i in range(rank):
result.append((product_users[i][0], product_users[i][1]))
return result
print(get_product_count('u0')) # 4
print(get_product_count('u11')) # 0
print(get_all_products()) # (9, ['TV Bank', 'Personal Bank', 'MobilePhone Bank', 'Ebank', 'POS', 'ATM', 'Telphone Bank'])
print(get_product_users()) # [('POS', 7), ('Ebank', 6), ('TV Bank', 4), ('Telphone Bank', 3), ('ATM', 2), ('Personal Bank', 2), ('MobilePhone Bank', 1)]
print(get_top_products(3)) # [('POS', 7), ('Ebank', 6), ('TV Bank', 4)]
```