花栗鼠很喜欢偷吃生产队的大萝卜,因此花栗鼠科技大学正在研究一种新型的数据库,叫做萝卜数据库...(Python代码)
Posted Z.Q.Fengᯤ⁵ᴳ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了花栗鼠很喜欢偷吃生产队的大萝卜,因此花栗鼠科技大学正在研究一种新型的数据库,叫做萝卜数据库...(Python代码)相关的知识,希望对你有一定的参考价值。
题目描述
花栗鼠很喜欢偷吃生产队的大萝卜,因此花栗鼠科技大学正在研究一种新型的数据库,叫做萝卜数据库。
具体来说,它支持 k ( 1 ≤ k ≤ 100 ) k(1 \\leq k \\leq 100) k(1≤k≤100) 个字段,每个字段名都是整数,里面存储的数值也都是整数。
现在你支持如下操作:
- 向数据库中插入一个记录,它可能只会包含 k k k 个字段的某一部分。具体的操作格式详见“输入格式”。
- 在数据库中查询有多少条符合条件的记录。
现在你总共有 n n n 次操作 ( 1 ≤ n ≤ 1000 ) (1 \\leq n \\leq 1000) (1≤n≤1000),请你对每个回答操作,输出结果。
输入格式
第一行两个整数 n , k n,k n,k,意义如题所述。
接下来的若干行,每行代表一次操作,具体如下:
- 1 p x 1 y 1 , . . . , x p y p 1\\ \\ p\\ \\ x_1\\ \\ y_1,\\ ...,\\ x_p\\ \\ y_p 1 p x1 y1, ..., xp yp:表示一个插入操作,其中共有 p p p 个字段,第 i i i 字段的名字是 x i x_i xi,值为 y i y_i yi 。此处我们保证 1 ≤ x i ≤ k , 1 ≤ y i ≤ 1000 1 \\leq x_i \\leq k, 1\\leq y_i \\leq 1000 1≤xi≤k,1≤yi≤1000,并且 x i , y i x_i,y_i xi,yi 均为整数。
- 2 x y m i n y m a x 2\\ \\ x\\ \\ y_min\\ \\ y_max 2 x ymin ymax:表示一次查询操作,表示查询所有满足 字段 x x x 的值在 [ y m i n , y m a x ] [y_min,y_max] [ymin,ymax] 之间的记录有多少个。
输出格式
对于每个查询操作,输出一行一个整数,表示符合条件的记录个数。
输出样例
输入:
4 5
1 2 1 2 2 4
2 2 1 5
1 2 3 5 4 6
2 4 7 8
输出:
1
0
题目分析
输入分析
题目的意思很明确,建立一个简单的数据库,数据是以“键-值”的形式存储的,因此对于输入数据,我们可以使用 Python 中的字典来进行存储,同时考虑到同一个键可以对应多个值,所以字典中的 Value 我们用一个列表来代替,即:
key1:[…], key2:[…], …, keyn:[…]
以第一行输入:1 2 1 2 2 4 为例:
1:[2], 2:[4]
输出分析
简单的查询操作,根据键找到对应的值列表,只需要查找出值列表中有多少个元素在范围内即可。
代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Dec 20 11:34:57 2021
简单的数据库操作
@author: zq
"""
# n 步操作,最大 k 个字段
n, k = map(int, input().split(' '))
# 创建一个字典
d =
# 读取每步操作
for i in range(n):
# 读取第 i 步操作输入
tmp = list(map(int, input().split(' ')))
# 如果是插入操作
if tmp[0] == 1:
p = tmp[1] # 获取插入字段数
for j in range(0, 2 * p, 2):# 每两个输入为一次插入
# 键、值
k, v = str(tmp[2 + j]), tmp[3 + j]
# 若键不存在则创建键-值列表
if k not in d.keys():
d[k] = []
# 向值列表中插入元素
d[k].append(v)
# 如果是查询操作
elif tmp[0] == 2:
k = str(tmp[1]) # 获取查询的键
v = d[k] # 获取值列表
a, b = tmp[2], tmp[3] # 获取字段值上下界
count = 0
# 查找值列表中在范围内的元素个数
for i in v:
if a <= i <= b:
count += 1
# 打印输出
print(count)
以上是关于花栗鼠很喜欢偷吃生产队的大萝卜,因此花栗鼠科技大学正在研究一种新型的数据库,叫做萝卜数据库...(Python代码)的主要内容,如果未能解决你的问题,请参考以下文章
Swift installTap 使用蓝牙麦克风产生“花栗鼠”音频