范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python字典操作零基础学习,一步到位

  来源:Python数据之道
  作者:阳哥
  大家好,我是阳哥。
  字典(dict)是 python 中的基础数据类型之一,字典的设计并不复杂,我们经常会用到这种数据类型。
  同时,字典也有一些比较实用的情景。
  学习任何一种编程语言,基础数据类型都是必备的底层基础,今天,我们来学习下 Python 中字典的使用。
  主要内容包括: 字典的基本用法 字典推导式 嵌套字典 01、基本用法
  在 Python 中,字典是一种可以将相关的两个信息关联起来的操作,并且字典可存储的信息量几乎不受限制。
  字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。
  创建字典
  字典是以 key、value 的形式创建的。
  字典的每个键值  key=>value  对用冒号 :  分割,每个键值对之间用逗号 ,  分割,整个字典包括在花括号 {}  中 ,格式如下所示:
  d = {key1 : value1, key2 : value2 }
  一般情况下,字典的创建可以有以下几种方式: # 创建一个空的字典 my_dict1 = {}  # 创建 key 值为整数的字典 my_dict2 = {1: "apple", 2: "ball"}  # 创建 key 值为 string 的字典 my_dict3 = {"name1": "apple", "name2": "ball"}  # 创建 key 值为 数字 和 string 混合的字典 my_dict4 = {"name": "apple", 1: [2, 4, 3]}  # 用 dict() 函数创建字典 my_dict5 = dict({1:"apple", 2:"ball"})  # 以元组的形式组成序列创建字典 my_dict6 = dict([(1,"apple"), (2,"ball")])  print("my_dict1:", my_dict1) print("my_dict2:", my_dict2) print("my_dict3:", my_dict3) print("my_dict4:", my_dict4) print("my_dict5:", my_dict5) print("my_dict6:", my_dict6)
  结果如下:     my_dict1: {}     my_dict2: {1: "apple", 2: "ball"}     my_dict3: {"name1": "apple", "name2": "ball"}     my_dict4: {"name": "apple", 1: [2, 4, 3]}     my_dict5: {1: "apple", 2: "ball"}     my_dict6: {1: "apple", 2: "ball"}
  也可以通过下面的方式来创建空白字典 # 创建空白字典的另一种方式 my_dict7 = dict()  # print("my_dict7:", my_dict7) my_dict7
  结果如下:     {}
  获取字典中的元素
  通过 key 来获取 value
  获取字典中的元素,可以直接通过 key 值来获取对应的 value,如下: my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3]}  print(my_dict8["name"]) print(my_dict8.get("name"))
  结果如下:     John     John
  请注意,如果字典的key值中没有该元素,则不能获取相应的 value,这种情况下产生错误。 print(my_dict8["name1"])
  结果如下:     ---------------------------------------------------------------------------      KeyError                                  Traceback (most recent call last)       in      ----> 1 print(my_dict8["name1"])           KeyError: "name1"
  通过 value 来获取 key
  通过 value 来获取 key 值,在 Python 中并没有提供直接的方法,我们可以通过自定义函数来实现,如下: def get_keys(d, value):     return [k for k,v in d.items() if v == value]
  函数中,d 是字典。
  在字典中修改或添加元素
  在字典中,可以修改已有 key 对应的 value 值,或者添加新的 key-value 键值对数据,如下: my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3]}  # 修改已有 key 对应的 value 的值 my_dict8["age"] = 98  # 添加新的 key-value 数据组 my_dict8["gender"] = "man"  my_dict8
  结果如下:     {"name": "John", "age": 98, 1: [2, 4, 3], "gender": "man"}
  从字典中删除元素
  从字典中删除元素,或者删除整个字典,有以下一些方式。
  pop() 方法
  移除字典数据pop()方法的作用是:删除指定给定键所对应的值,返回这个值并从字典中把它移除。 # 使用 pop()方法来删除 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3]}  my_dict8.pop("age")  my_dict8
  结果如下:     {"name": "John", 1: [2, 4, 3]}
  del 方法 # 使用 del 方法来删除 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3]}  del my_dict8["name"]  my_dict8
  结果如下:     {"age": 25, 1: [2, 4, 3]}
  popitem() 方法 # 使用 popitem()方法来删除 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3],              "gender": "man", "school": "UCI", "city": "NewYork"}  my_dict8.popitem()  my_dict8
  结果如下:      {"name": "John", "age": 25, 1: [2, 4, 3], "gender": "man", "school": "UCI"}
  关于 popitem() 方法:
  在Python 3.5版本以及之前的时候,使用 popitem() 可能是随机删除的,但我曾经用的 Python3.6版本,好像不是随机删除的,是删除的最后一项。
  从 Python 3.7 版本开始,使用 popitem() 方法是删除最后一项,因为字典默认是记住了顺序的: Ordered dictionaries are just like regular dictionaries but have some extra capabilities relating to ordering operations.
  They have become less important now that the built-in dict class gained the ability to remember insertion order (this new behavior became guaranteed in Python 3.7).
  另外,我查阅了一下 Python3.7 版本中的描述,如下: popitem()
  Remove and return a (key, value) pair from the dictionary. Pairs are returned in LIFO order.
  popitem() is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, calling popitem() raises a KeyError.
  Changed in version 3.7: LIFO order is now guaranteed. In prior versions, popitem() would return an arbitrary key/value pair.
  https://docs.python.org/3/library/stdtypes.html#mapping-types-dict
  在 Python3.7 版本中,是按照 LIFO 的原则进行删除的,是有序进行删除的。
  LIFO (Last-in, first-out)即后进来的先删除(也可理解为按后面往前的排序进行删除)
  clear()方法
  clear()方法是用来清除字典中的所有数据,因为是原地操作,所以返回  None (也可以理解为没有返回值)# 使用 clear()方法来清空字典中的所有数据,返回的是一个空字典 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  my_dict8.clear()  my_dict8
  结果如下:     {}
  del 方法
  del 方法可以删除字典中指定 key 值的内容。
  另外, del 可以删除整个字典,与 clear() 方法的清空字典中所有数据是不一样的。演示如下:
  使用 del方法是删除字典中指定 key 值对应的内容 # 使用 del方法是删除字典中指定 key 值对应的内容 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  del my_dict8["age"]  my_dict8
  结果如下:     {"name": "John", 1: [2, 4, 3], "gender": "man"}
  使用 del方法是删除整个字典,删除后,再运行程序,会报错误 # 使用 del方法是删除整个字典,删除后,再运行程序,会报错误 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  del my_dict8  my_dict8
  结果如下:     ---------------------------------------------------------------------------      NameError                                 Traceback (most recent call last)       in            4 del my_dict8           5      ----> 6 my_dict8           NameError: name "my_dict8" is not defined
  字典内置函数&方法
  Python字典包含了以下内置函数:
  序号函数及描述len(dict)计算字典元素个数,即键的总数。str(dict)输出字典可打印的字符串表示。type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。
  len(), str(), type() 函数my_dict6 = dict([(1,"apple"), (2,"ball")]) my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  print(len(my_dict8)) print(str(my_dict6)) print(type(my_dict8))
  结果如下:     4     {1: "apple", 2: "ball"}     
  Python字典包含以下一些方法:
  函数函数描述clear()删除字典内所有元素,返回空字典copy()返回一个字典的浅复制fromkeys(seq[, val])创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值get(key, default=None)返回指定键的值,如果值不在字典中返回 default 值items()以列表返回可遍历的(键, 值) 元组数组keys()以列表返回一个字典所有的键setdefault(key, default=None)和 get()类似, 但如果键不存在于字典中,将会添加键并将值设为 defaultupdate(dict2)把字典 dict2 的键/值对更新到 dict里values()以列表返回字典中的所有值pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。
  key 值必须给出。否则,返回 default值。popitem()随机返回并删除字典中的一对键和值。
  Python 3.6及以后版本,以 LIFO 的原则进行删除的,是有序进行删除的。
  clear(), get(), pop(), popitem() 等在上面已介绍的方法,这里不做重复,仅演示其他方法的使用。
  copy, keys, values, items 方法 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  print("copy:", my_dict8.copy()) print("keys:", my_dict8.keys()) print("values:", my_dict8.values()) print("items:", my_dict8.items())
  结果如下:     copy: {"name": "John", "age": 25, 1: [2, 4, 3], "gender": "man"}     keys: dict_keys(["name", "age", 1, "gender"])     values: dict_values(["John", 25, [2, 4, 3], "man"])     items: dict_items([("name", "John"), ("age", 25), (1, [2, 4, 3]), ("gender", "man")])
  update 方法
  通过 update 方法,可以更新字典的数据内容: my_dict6 = {"name": "Lemon", "age": 25 , 1: [2, 4, 3], "gender": "man"} my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  my_dict8.update(my_dict6)  my_dict8
  结果如下:     {"name": "Lemon", "age": 25, 1: [2, 4, 3], "gender": "man"}
  fromkeys 方法
  fromkeys()方法的演示如下:
  请注意,该结果与 zip() 方法之后的结果是不一样的。 seq = ["name", "age", "city"] value = ["Lemon", 18, "cs"]  my_dict9 = dict.fromkeys(seq, value)  my_dict9
  结果如下:     {"name": ["Lemon", 18, "cs"],      "age": ["Lemon", 18, "cs"],      "city": ["Lemon", 18, "cs"]}
  zip()方法 seq = ["name", "age", "city"] value = ["Lemon", 18, "cs"]  my_dict10 = dict(zip(seq, value))  my_dict10
  结果如下:     {"name": "Lemon", "age": 18, "city": "cs"}
  setdefault 方法
  dict.setdefault(key, default=None)
  该方法接收两个参数,第一个参数是健的名称,第二个参数是默认值。
  假如字典中不存在给定的键,则把默认值赋值给对应的value,并返回默认值;
  反之,不修改value,只返回value。 my_dict8 = {"name": "John", "age": 25 , 1: [2, 4, 3], "gender": "man"}  print("字典中存在的key,返回对应value:", my_dict8.setdefault("age", 0)) print("字典中不存在的key,返回默认值:", my_dict8.setdefault("age1", 0))
  结果如下:     字典中存在的key,返回对应value: 25     字典中不存在的key,返回默认值: 0
  此外,还可以用 setdefault() 方法统计一个列表里单词出现的次数: # 用 setdefault() 方法统计一个列表里单词出现的次数 strings = ("Lemon", "kitten", "Lemon", "Lemon",            "lemon_zs", "Lemon", "Lemon", "lemon_zs") counts = {} for kw in strings:     counts[kw] = counts.setdefault(kw, 0) + 1  counts
  结果如下:     {"Lemon": 5, "kitten": 1, "lemon_zs": 2} 02、字典推导式(dict comprehension)
  字典推导式的一般表达式如下:
  {key: value for (key, value) in iterable}
  有些用法与列表推导式是类似的,可以参考下面的内容: Python数据类型-List介绍(上) Python数据类型-List介绍(下)-列表推导式
  用字典推导式的方法创建字典: my_dict01 = {x: x*x for x in range(6)}  my_dict01
  结果如下:     {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
  通过两个list创建字典: keys = ["name", "age", "city"] values = ["Lemon", 18, "cs"]  my_dict02 = {k:v for (k,v) in zip(keys,values)}  my_dict02
  结果如下:     {"name": "Lemon", "age": 18, "city": "cs"}
  在特定条件下,用字典推导式的方法创建字典: my_dict03 = {x: x*x for x in range(10) if x%2==0}  my_dict03
  结果如下:     {0: 0, 2: 4, 4: 16, 6: 36, 8: 64} 03、嵌套型字典
  什么是嵌套型的字典
  字典是以 key、value 的形式创建的, 而嵌套型的字典有一个特征,就是 key 对应的 value 值也可以是一个字典。最简洁的嵌套型字典如下: d = {key1 : {key3 : value3},       key2 : {key4 : value4} }
  创建一个嵌套型字典nested_dict01 = {1: {"name":"Lemon", "age": "18", "city":"cs"},                 2: {"name":"Lemon_zs", "age": "18", "city":"changsha"}} nested_dict01
  结果如下:     {1: {"name": "Lemon", "age": "18", "city": "cs"},      2: {"name": "Lemon_zs", "age": "18", "city": "changsha"}}
  上述的嵌套型字典中,字典第一层的 key 分别是 1 和 2, 而他们对应的 value 值又是都是字典, 里面的字典的 key 都是 "name", "age" 和 "city", 但对应的 value 不一样。
  从嵌套型字典中获取元素
  从嵌套型字典中获取元素,跟从 list, 以及数组中获取元素时有些类似的。
  嵌套型字典 用  []  进行不同层级元素的获取。nested_dict01 = {1: {"name":"Lemon", "age": "18", "city":"cs"},                 2: {"name":"Lemon_zs", "age": "18", "city":"changsha"}}  print(nested_dict01[1]["name"]) print(nested_dict01[2]["city"])
  结果如下:     Lemon     changsha
  修改嵌套型字典的元素 (更改、增加或删除元素)
  针对嵌套型字典,同样是可以更新、增加或删除元素的.
  增加一个空的字典 nested_dict01 = {1: {"name":"Lemon", "age": "18", "city":"cs"},                 2: {"name":"Lemon_zs", "age": "18", "city":"changsha"}}  # 增加一个空的字典 nested_dict01[3] = {}  nested_dict01
  结果如下:     {1: {"name": "Lemon", "age": "18", "city": "cs"},      2: {"name": "Lemon_zs", "age": "18", "city": "changsha"},      3: {}}
  修改或增加新的元素 # 修改元素内容 nested_dict01[2]["age"] = "26"  # 增加新的元素 nested_dict01[3]["name"] = "zws" nested_dict01
  结果如下:     {1: {"name": "Lemon", "age": "18", "city": "cs"},      2: {"name": "Lemon_zs", "age": "26", "city": "changsha"},      3: {"name": "zws"}}
  在嵌套型字典中直接添加一个字典 # 在嵌套型字典中直接添加一个字典 nested_dict01[5]={"name": "rx", "age":"3", "city":"ly"} nested_dict01
  结果如下:     {1: {"name": "Lemon", "age": "18", "city": "cs"},      2: {"name": "Lemon_zs", "age": "26", "city": "changsha"},      3: {"name": "zws"},      5: {"name": "rx", "age": "3", "city": "ly"}}
  删除某个具体元素内容 # 删除某个具体元素内容 del nested_dict01[5]["city"] nested_dict01
  结果如下:     {1: {"name": "Lemon", "age": "18", "city": "cs"},      2: {"name": "Lemon_zs", "age": "26", "city": "changsha"},      3: {"name": "zws"},      5: {"name": "rx", "age": "3"}}
  删除嵌套字典里面的某个字典 # 删除嵌套字典里面的某个字典 del nested_dict01[5] nested_dict01
  结果如下:     {1: {"name": "Lemon", "age": "18", "city": "cs"},      2: {"name": "Lemon_zs", "age": "26", "city": "changsha"},      3: {"name": "zws"}}
  通过 for 循环来获取嵌套字典内的元素for main_id, main_info in nested_dict01.items():     print(" main id: ", main_id)          for key in main_info:         print(key+":", main_info[key])
  结果如下:          main id:  1     name: Lemon     age: 18     city: cs          main id:  2     name: Lemon_zs     age: 26     city: changsha          main id:  3     name: zws
  用 pprint 输出嵌套型字典
  用  pprint  可以使字典显示层次更清晰,需要安装 pprint,安装命令如下:
  pip install pprint
  演示如下: # 需要安装 pprint # pip install pprint # pprint 可以使字典显示层次更清晰 import pprint  menu = {"dinner":{"chicken":"good","beef":"average",                   "vegetarian":{"tofu":"good",                                 "salad":{"caeser":"bad",                                          "italian":"average"}},                   "pork":"bad"}} pprint.pprint(menu)
  结果如下:     {"dinner": {"beef": "average",                 "chicken": "good",                 "pork": "bad",                 "vegetarian": {"salad": {"caeser": "bad", "italian": "average"},                                "tofu": "good"}}}
  嵌套型字典的一些用途
  可能有些疑惑,字典嵌套这么多层,在哪些地方可以用呢?
  这里分享一个用途。嵌套型字典,经常在机器学习中的决策树算法中涉及到。
  比如下面的 menu, 是一个字典。它也可以用树的形式显示出来,这在 决策树中会经常用到。 menu = {"dinner":{"chicken":"good","beef":"average",                   "vegetarian":{"tofu":"good",                                 "salad":{"caeser":"bad",                                          "italian":"average"}},                   "pork":"bad"}}
  示例: from sklearn.tree import DecisionTreeClassifier, export_graphviz from sklearn import tree from sklearn.datasets import load_wine from IPython.display import SVG from graphviz import Source from IPython.display import display # load dataset data = load_wine()  # feature matrix X = data.data  # target vector y = data.target  # class labels labels = data.feature_names  # print dataset description # print(data.DESCR) estimator = DecisionTreeClassifier() estimator.fit(X, y)  graph = Source(tree.export_graphviz(estimator, out_file=None    , feature_names=labels, class_names=["0", "1", "2"]     , filled = True)) display(SVG(graph.pipe(format="svg")))
  可视化效果如下:
  04 小结
  以上就是 python 中关于字典使用的基础内容,在实践中,咱们还会大量应用到字典。相对来说,嵌套字典会比较复杂些。当我们熟练使用字典的基本方法时,还是可以应对这些问题的。
  有时候,也会有一些比较独特的字典,比如 key-value 键值对中的 value 是 pandas 中的 dataframe ,其基础原理,一些常用的方法还是一样的。

小米10彻底说再见!小米12即将说你好即使是曾经风靡一时的产品,也经不起新机器和打磨过的机器的对比,因为新机器迟早会一步步压垮取代旧机器。在如今的手机市场上,真的有很多新机,这也让很多机型失去了人气,尤其是去年的手机产700km超长续航智己L7让续航焦虑成为过去时新能源汽车的续航里程一直是用户关注的重点之一。那么,由上汽集团阿里巴巴张江集团三巨头联合打造立志做中国市场高端新能源智能汽车的智己,表现如何呢?根据智己汽车发布的数据,智己L7续航老人去试听助听器效果不明显还有必要佩戴吗?老人戴助听器的效果取决于自身的听力损失情况和分辨率,还有自己的反映是不是特别慢?一般来说听力损失中等,反映不算慢的老人戴助听器都有不错的效果。如果是效果特别差,戴上交流起来也不算顺2021中国国际数字经济博览会圆满闭幕,河北签约项目逾200个总金额超1500亿元9月8日,以创新发展与数字经济为主题的2021中国国际数字经济博览会在石家庄圆满闭幕。9月8日,2021中国国际数字经济博览会先河环保展区,工作人员正在向观众介绍生态大脑。据介绍,没人知道特斯拉机器人是不是真的。如果是真的,风险将随之而来前不久,伊隆马斯克(ElonMusk)宣布推出一款人形机器人,旨在帮助人们完成那些重复性枯燥的工作。马斯克声称,它甚至可以为你去杂货店购物。据推测,它可以处理一些涉及体力劳动的任务科普新能源车动力电池安全风险与应对方法1新能源车电安全引人担忧近年来伴随新能源车市场的火爆,社会上已发生多起新能源车起火事故,电池安全渐渐成为了新能源电动汽车最重要的议题之一,也是各方关注的焦点。新能源汽车国家大数据联那些曾不被看好的数字货币狗狗币上期我们说到比特币的出现在一开始是不被大众所看好的,但之后比特币却一路飞涨。那除了比特币外你还知道哪些暴涨的币吗?今天我们要介绍的就是国际上用户数仅次于比特币的的第二大虚拟货币狗狗重磅照片曝出,美神秘重型无人机现身菲律宾海意欲何为?近日,有媒体援引美媒战区网站9月6日的报道,一位名叫迈克尔。富格尼特的摄影师在菲律宾马格达莱娜地区上空,拍摄到一架正在飞行中的神秘飞机。从公布的该机照片来看,这是一架大型的无人机,中国新能源汽车的潜力龙头15家新能源汽车生产供应商新能源汽车的现状今年的传统车企的销量出现跳崖式下跌,其主要原因是现在的新能源汽车技术也得到了发展,已经实现了弯道超车。从行业预测来看,新能源汽车的短期和中期仍然处于上升通道。这就导日本暗中拆解华为手机,崭新零件让人眼前一亮,感慨中方真崛起了日本拆解华为5G手机,中方零件占比高达56。6日本媒体在日本工程师的帮助之下,拆解了华为上线的5G智能手机Mate40E,这款手机采用的中方零件占比达到了56。6,与前年的30相比争芯大战,苹果亚马逊阿里巴巴等科技巨头加速自力更生了科技明说阿明独家分析随着全球芯片荒持续发酵,加上半导体大厂宣布纷纷涨价,早已在芯片领域有所积累的科技巨头苹果谷歌亚马逊Facebook阿里巴巴等,相继推出了适合自己业务创新的芯片。
490公里续航,合资快充大家轿,便宜又好养活,现代菲斯塔新能源现代菲斯塔物美价廉的事物,总是能受到消费者喜欢,好用又不贵的,真好。现在的现代,比起曾经的现代要好得多,旗下车型都走起了亲民路线,性价比比肩国产车了。今天给大家带来现代旗下的新能源喜欢摄影的伙伴有福了,这款一加9Pro堪称影像机皇在当今以图片短视频流行的时代,使用手机记录美好影像已经成为了人们生活的一部分。拥有自由曲面IMX766超广角的一加9Pro,足以满足人们对智能机的核心需求。全新设计的三层相机模组整小米12的技术创新之一竟是散热系统,或反映骁龙8G1发热问题发布会上发布的信息显示小米12Pro搭载了超大面积的VC散热板,还有散热膜铜箔石墨烯等诸多创新科技,反正听起来就是很高深的样子,显示出小米为了确保骁龙8G1能时刻提供澎湃动力,极力绝大多数人工作后英语都没用过,英语作为我国教学的主科有必要吗?我买菜的时候没用到过三角函数,砍价的时候没用到过之乎者也,炒菜的时候没考虑过盐溶解和温度的关系,擦地的时候没考虑过力学和速度,拉屎的时候没思考过粪便里细菌和肠道内环境的关系,周六日恒宝股份NFT交易系统支持金融IC移动支付区块链物联网恒宝股份是中国智能卡安全物联网大数据区块链的上市企业,致力于为银行通信防务政府公共服务部门交通等提供数据安全及身份认证整套解决方案和物联网在相关应用领域的综合解决方案等服务。eSI微信力挺国产芯片国产系统,已支持ARMX86龙芯三大指令集众所周知,对于所有的PC芯片PC操作系统而言,WINTEL联盟就是一个绕不过去的坎。WIN代表着windows生态,而TEL代表的是intel的X86架构,而只要脱离在WINTEL京东手机新年开门红战报出炉Apple小米荣耀斩获品牌销量TOP3一眨眼,2022年就来啦。不少人都会选择在这个时候给自己或者家人换一部新手机,当作辞旧迎新的礼物。在手机成为生活必需品的年代,送一部手机最合适不过了。12月31日晚8点,京东手机新英媒文章2021年最有趣的科学发现英国新科学家周刊网站12月23日发表题为以下是2021年我们最喜欢的酷酷有趣离奇的科学故事的文章,作者是特里什拉奥斯特瓦尔。全文摘编如下一系列酷酷的发现技术里程碑和彻底而怪异的科学新年换手机,有3类手机不适合捡漏,听听行内老师傅的分析岁末年初,买手机的用户大致分为两类,第一类是等着新旗舰发布,第二类是准备捡漏老旗舰,前者踩坑的几率很低,后者捡漏老旗舰踩坑的几率就要大不少了,如果你正在考虑捡漏一款手机,不妨听听行最新安卓手机性能榜出炉,高性能手机已跟华为小米没啥关系转眼间,2021年又过去了,随之而来的12月份也过去了,目前国产评测软件安兔兔也发布了安卓手机最新性能榜,本次榜单,对安卓进行了重新排名,从排名可以看出,这次国产手机中,华为小米荣荣耀Magic4Pro概念设计图曝光,超曲瀑布屏双环主摄,很期待荣耀手机今年给消费者带来了很多惊喜,相比曾经的产品线定位,独立出来的荣耀开始更理智更全面的定位国内市场,从入门机到高端机,线上产品线下产品,满足了更多消费者购机的需求,这是个人比较