Python-Project-5-学习笔记

[TOC]

练习

  • 针对下面这个表格中的数据,创建一个字典并输出查看
Serial track_name user_rating
1 Facebook 3.5
2 Instagram 4.5
3 Clash of Clans 4.5
4 Temple Run 4.5
5 Pandora - Music & Radio 4.0
# 统计不同评分的应用数量
array = [[1, "Facebook", 3.5], [2, "Instagram", 4.5],
[3, "Clash of Clans", 4.5], [4, "Temple Run", 4.5],
[5, "Pandora - Music & Radio", 4.0]]
dict = {}
for line in array:
dict[line[2]] = dict.get(line[2], 0) + 1
print(dict)

练习

dict = {}
dict['Facebook'] = 3.5
dict['Instagram'] = 4.5
dict['Clash of Clans'] = 4.5
dict['Temple Run'] = 4.5
dict['Pandora - Music & Radio'] = 4.0
print(dict)

练习

检查下面的代码,并确定是否会引发错误

{
4: 'four',
1.5: 'one point five',
'string_key': 'string_value',
True: 'True', # Warning True 作为键值,会被转化为 1
[1, 2, 3]: 'a list', # 数组作为键值 unhashable Error
{
10: 'ten'
}: 'a dictionary' # 字典作为键值 unhashable Error
}

练习

使用表达式 a_value in a_dictionary 检查以下键是否在字典content_ratings中:

  • 字符串’9+’
  • 整数987
content_ratings = {'4+': 4433, '9+': 987, '12+': 1155, '17+': 622}
print('9+' in content_ratings)
print(987 in content_ratings)

练习

使用本任务中掌握的更新字典内容的技能,对整个数据集进行分析

from csv import reader

app_data_set = list(reader(open('assets/dataset/AppleStore.csv')))
d = {}
for line in app_data_set[1:]:
# 统计不同年龄分级的APP的数量
d[line[10]] = d.get(line[10], 0)+1
print(d)

练习

让我们完成本任务最初提出但未回答的两个问题:

  • 哪些应用程序的内容分级为“17+”
  • 一个15岁的孩子能下载多少百分比的应用程序
from csv import reader

app_data_set = list(reader(open('assets/dataset/AppleStore.csv')))
array_17_plus = []
dict_age = {}
for line in app_data_set[1:]:
# 统计不同年龄分级的APP的数量
dict_age[line[10]] = dict_age.get(line[10], 0)+1
if(line[10] == "17+"):
array_17_plus.append(line[1])
sum = 0
for key in dict_age:
sum += dict_age[key]
# print(dict_age)
print("内容分级为 17+ 的游戏有: %s..." % str(array_17_plus)[1:90])
print("15岁孩子能下载的百分比约为: %.3f%%" % ((1-len(array_17_plus)/sum)*100))

练习

  • size_bytes列中的值提取到单独的列表中。

    • 创建一个名为data_sizes的空列表。
    • 遍历apps_data
      • 将数据大小以浮点形式存储在名为size的变量中。
      • size累加到data_sizes列表。
  • 找出最小和最大的应用程序数据大小。

    • 将最小值分配给名为min_size的变量。
    • 将最大值分配给名为max_size的变量。
    • 输出查看应用程序数据最大值与最小值。
from csv import reader

app_data_set = list(reader(open('assets/dataset/AppleStore.csv')))
data_sizes = []
for line in app_data_set[1:]:
size = float(line[2])
data_sizes.append(size)
min_size = min(data_sizes)
max_size = max(data_sizes)
print(min_size)
print(max_size)

练习

  • 计算出这个数据集中,应用程序数据大小的最大值和最小值
  • 根据得到的最小和最大值来任选6个间隔,使用字典分析你选取的6个间隔中所包含的应用程序数量
from csv import reader

app_data_set = list(reader(open('assets/dataset/AppleStore.csv')))
data_sizes = []
for line in app_data_set[1:]:
size = float(line[2])
data_sizes.append(size)
min_size = min(data_sizes)
max_size = max(data_sizes)
print("应用的最小字节数是 %.0d" % min_size)
print("应用的最大字节数是 %.0d" % max_size)
dict_sizes = {
'0-10 MB': 0,
'10-50 MB': 0,
'50-100MB': 0,
'100-500MB': 0,
'500MB+': 0}
for size in data_sizes:
if 0 < size <= 1e7:
dict_sizes['0-10 MB'] += 1
elif 1e7 < size <= 5e7:
dict_sizes['10-50 MB'] += 1
elif 5e7 < size <= 1e8:
dict_sizes['50-100MB'] += 1
elif 1e8 < size <= 5e8:
dict_sizes['100-500MB'] += 1
elif size > 5e8:
dict_sizes['500MB+'] += 1
print(dict_sizes)

语法

  1. 创建字典:
# 方法1
dictionary = {'key_1': 1, 'key_2': 2}
# 方法2
dictionary = {}
dictionary['key_1'] = 1
dictionary['key_2'] = 2
  1. 检索单个词典值:
dictionary = {'key_1': 100, 'key_2': 200}
dictionary['key_1'] # Outputs 100
dictionary['key_2'] # Outputs 200
  1. 检查字典中是否存在某个值作为键:
dictionary = {'key_1': 100, 'key_2': 200}
'key_1' in dictionary # 输出 True
'key_5' in dictionary # 输出 False
100 in dictionary # 输出 False
  1. 更新字典值:
dictionary = {'key_1': 100, 'key_2': 200}
dictionary['key_1'] += 600 # 值将会变为 700
  1. 为数据集的列中的唯一值创建频率表:
frequency_table = {}
for row in a_data_set:
a_data_point = row[5]
if a_data_point in frequency_table:
frequency_table[a_data_point] += 1
else:
frequency_table[a_data_point] = 1

概念

  • 字典值的索引称为key。在'4+': 4433中,字典键是'4+',字典值是4433'4+': 4433是一个键值对。
  • 字典值可以是任何数据类型:字符串、整数、浮点数、布尔值、列表,甚至字典。但是,字典键除了列表和字典外,几乎可以是到目前为止我们所知道的任何数据类型。如果我们使用列表或字典作为字典键,则计算机会引发错误。
  • 我们可以使用in运算符检查字典中是否存在某个值作为键。这个in表达式返回的是一个布尔值。
  • 唯一值出现的次数也称为频率。将唯一值映射到其频率的表称为频率表。
  • 当我们使用 for 循环访问字典时,默认情况下,循环是在字典键上进行的。