Python基础---Dict(字典)

本文介绍了Python字典的基础知识,包括字典的创建、访问、更新和删除操作。讲解了字典的键必须是hashable且唯一,值可任意。讨论了字典的常用方法如len(), get(), pop(), update()等,并对比了setdefault()与直接赋值的区别。还提到了字典的keys()和items()支持集合运算的特点。" 39830257,4847703,大一新生的计算机科学之旅:从零开始,"['计算机科学', '编程入门', '学习策略', '大学教育', '编程实践']

1.字典以键值对组成,包含在{}中,字典的键必须为hashable,即不可变(字符串、元组、数字),并且唯一;值可以是任何类型

# dict1 = {[1]: 1}  # 报错:TypeError: unhashable type: 'list'

# dict1 = {{1}: 1}  # 报错:TypeError: unhashable type: 'set'

dict1 = {(1,): 1}
print(dict1)  # {(1,): 1}

dict1 = {"12": 122}
print(dict1)  # {'12': 122}

dict1 = {1: 12}
print(dict1)  # {1: 12}

2.字典的创建有多种,以下几种都等同

dict1 = dict(one=1, two=2)
print(dict1)  # {'one': 1, 'two': 2}

dict2={"one":1,"two":2}
print(dict2)  # {'one': 1, 'two': 2}

dict3=dict(zip(["one","two"],[1,2]))
print(dict3)  # {'one': 1, 'two': 2}

dict4=dict( (("one",1),("two",2)) )
print(dict4)  # {'one': 1, 'two': 2}

dict5=dict( [("one",1),("two",2)] )
print(dict4)  # {'one': 1, 'two': 2}

dict6=dict({"one":1,"two":2})
print(dict6)  # {'one': 1, 'two': 2}

print(dict1==dict2==dict3==dict4==dict5==dict6)  # True

3.键用数字的时候,像1和1.0、1.00都是相同的,可以用来索引同一个字典条目,如果相同的键出现多次,则以最后的值为准

dict1 = {1: 12}
print(dict1)  # {1: 12}

dict1 = {1: 12, 1.0: 33}
print(dict1)  # {1: 33}

dict1 = {1: 12, 1.0: 33,1.00:666}
print(dict1)  # {1: 666}

4.len(dict):表示字典中元素的个数

dict1 = {"a": 1, "aa": 11}
print(len(dict1))  # 2

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(len(dict1))  # 4

5.dict[key]:返回 dict 中以 key 为键的值, 如果key不存在 , 则会引发 KeyError

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1["aa"])  # 11
# print(dict1["c"])  # 报错:KeyError: 'c'

6.dict[key]=value:将 dict[key] 设为 value,若 dict[key]原来存在,则更新原来的value值,否则类似于新加了key-value

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
dict1["a"]=2
dict1["c"]=3
print(dict1)  # {'a': 2, 'aa': 11, 'b': 2, 'bb': 22, 'c': 3}

7.key in dict:如果字典dict中存在键 key 则返回 True,否则返回 False

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1)  # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print("a" in dict1)  # True
print("a " in dict1)  # True
print(" a" in dict1)  # False

8.key not in dict:如果字典dict中不存在键 key 则返回 True,否则返回 False,等同于not key in dict

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1)  # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print("a" not in dict1)  # False
print("a " not in dict1)  # False
print(" a" not in dict1)  # True

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1)  # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print(not "a" in dict1)  # False
print(not "a "  in dict1)  # False
print(not " a"  in dict1)  # True

9.iter(dict):返回以字典的键为元素的迭代器,是 iter(dict.keys()) 的简写

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1.keys())  # dict_keys(['a', 'aa', 'b', 'bb'])
print(iter(dict1.keys()))  # <dict_keyiterator object at 0x000002B3109DAA98>
print(list(iter(dict1.keys())))  # ['a', 'aa', 'b', 'bb']

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(iter(dict1))  # <dict_keyiterator object at 0x000001217051AA98>
d=iter(dict1)
print(tuple(d))  # ('a', 'aa', 'b', 'bb')

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(iter(dict1))  # <dict_keyiterator object at 0x000001217051AA98>
d=iter(dict1)
print(list(d))  # ['a', 'aa', 'b', 'bb']

10.dict.clear():删除字典的所有元素,无返回值

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1.clear())  # None
print(dict1)  # {}
dict1.clear()
print(dict1)  # {}

11.dict.copy():返回字典的浅拷贝

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
dict2=dict1.copy()
print(dict1)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict2)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
dict1["a"]=999
print(dict1)  # {'a': 999, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict2)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
dict1["ccc"][0]=99
print(dict1["ccc"])  # [99, 2, 3]
print(dict2["ccc"])  # [99, 2, 3]
dict1["ccc"]=[8,9]
print(dict1["ccc"])  # [8, 9]
print(dict2["ccc"])  # [99, 2, 3]
dict1["ccc"]=888
print(dict1["ccc"])  # 888
print(dict2["ccc"])  # [99, 2, 3]

dict2["fu"][0]=119
print(dict1["fu"])  # [119, [102, 103]]
print(dict2["fu"])  # [119, [102, 103]]

dict2["fu"][1][0]=77
print(dict1["fu"])  # [119, [77, 103]]
print(dict2["fu"])  # [119, [77, 103]]

dict2["fu"][1]=[104,105,106]
print(dict1["fu"])  # [119, [104, 105, 106]]
print(dict2["fu"])  # [119, [104, 105, 106]]

dict2["fu"]=[107,108,[109,110,111]]
print(dict1["fu"])  # [119, [104, 105, 106]]
print(dict2["fu"])  # [107, 108, [109, 110, 111]]

del dict1["a"]
print(dict1)  # {'bb': 22, 'ccc': 888, 'dd': (4, 5, 6), 'fu': [119, [104, 105, 106]]}
print(dict2)  # {'a': 1, 'bb': 22, 'ccc': [99, 2, 3], 'dd': (4, 5, 6), 'fu': [107, 108, [109, 110, 111]]}
del dict1["fu"]
print(dict1)  # {'bb': 22, 'ccc': 888, 'dd': (4, 5, 6)}
print(dict2)  # {'a': 1, 'bb': 22, 'ccc': [99, 2, 3], 'dd': (4, 5, 6), 'fu': [107, 108, [109, 110, 111]]}

12.dict.fromkeys(seq[, value]):使用来自 seq的键创建一个新字典,并将键值设为 value,value默认为None

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
dict2=dict.fromkeys(dict1)
print("New Dict2 : ")
print(dict2)  # {'a': None, 'bb': None, 'ccc': None, 'dd': None, 'fu': None}
dict3=dict1.fromkeys(dict1,23)
print("New Dict3 : ")
print(dict3)  # {'a': 23, 'bb': 23, 'ccc': 23, 'dd': 23, 'fu': 23}
dict3=dict1.fromkeys(dict1,"straa")
print("New Dict3 : ")
print(dict3)  # {'a': 'straa', 'bb': 'straa', 'ccc': 'straa', 'dd': 'straa', 'fu': 'straa'}
dict3=dict1.fromkeys(dict1,(1,2))
print("New Dict3 : ")
print(dict3)  # {'a': (1, 2), 'bb': (1, 2), 'ccc': (1, 2), 'dd': (1, 2), 'fu': (1, 2)}
dict3=dict1.fromkeys(dict1,[2,3])
print("New Dict3 : ")
print(dict3)  # {'a': [2, 3], 'bb': [2, 3], 'ccc': [2, 3], 'dd': [2, 3], 'fu': [2, 3]}
dict3=dict1.fromkeys(dict1,{"a":100})
print("New Dict3 : ")
print(dict3)  # {'a': {'a': 100}, 'bb': {'a': 100}, 'ccc': {'a': 100}, 'dd': {'a': 100}, 'fu': {'a': 100}}
dict3=dict1.fromkeys(dict1,{"a","b","a"})
print("New Dict3 : ")
print(dict3)  # {'a': {'a', 'b'}, 'bb': {'a', 'b'}, 'ccc': {'a', 'b'}, 'dd': {'a', 'b'}, 'fu': {'a', 'b'}}

dict1={"a":1,"a":101}
dict3=dict1.fromkeys(dict1,2)
print("New Dict3 : ")
print(dict3)  # {'a': 2}

13.dict.get(key[, default]):返回指定键key对应的value值,若key不存在,则返回default,default默认为None

     注:若key对应的value有值,即使给出default,也是返回value

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.get("a"))  # 1
print(dict1.get("a","new value"))  # 1
print(dict1.get("e"))  # None
print(dict1.get("e",333))  # 333

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]],"a":888}
print(dict1.get("a"))  # 888
print(dict1.get("e"))  # None
print(dict1.get("e",8989))  # 8989

14.dict.items():返回 元素为(键, 值) 组成的元组,组合而成的列表,可遍历

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.items())  # dict_items([('a', 1), ('bb', 22), ('ccc', [1, 2, 3]), ('dd', (4, 5, 6)), ('fu', [101, [102, 103]])])
print(type(dict1.items()))  # <class 'dict_items'>
for d in dict1.items():
    print(d)
    print(type(d))
'''上述结果:
('a', 1)
<class 'tuple'>
('bb', 22)
<class 'tuple'>
('ccc', [1, 2, 3])
<class 'tuple'>
('dd', (4, 5, 6))
<class 'tuple'>
('fu', [101, [102, 103]])
<class 'tuple'>'''


dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]],"a":888}
print(dict1.items())  # dict_items([('a', 888), ('bb', 22), ('ccc', [1, 2, 3]), ('dd', (4, 5, 6)), ('fu', [101, [102, 103]])])

15.dict.keys():同第9点 iter(dict)

16.pop(key[, default]):如果 key 存在于字典中,则将其移除,并且无论是否给出default值,都返回其对应的value值;如果 key 不存在,但给出default,则返回 default值;如果 default 未给出且 key 不存在于字典中,则会引发 KeyError

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.pop("a", 1))  # 1
print(dict1)  # {'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict1.pop("bb"))  # 22
print(dict1)  # {'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}

#key"deded"不存在,但是给定了默认值
print(dict1.pop("deded","wuwuwu"))  # wuwuwu

#pop方法必须带参数
# print(dict1.pop())  # 报错:TypeError: pop expected at least 1 arguments, got 0

#key“abc”不存在,并且未给定默认值
# print(dict1.pop("abc"))  # 报错: KeyError: 'abc'


dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]],"a":888}
print(dict1.pop("a", 1))  # 888
print(dict1)  # {'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict1.pop("a", 123))  # 123
print(dict1)  # {'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}

17.popitem():从字典中移除并返回一个 (键, 值) 对,3.7版本后会按 “后进先出”的顺序被返回,但是如果字典为空,调用 popitem() 将引发 KeyError

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
# print(dict1.popitem("a", 1))  # 报错:TypeError: popitem() takes no arguments (2 given)
print(dict1.popitem())  # ('fu', [101, [102, 103]])
print(dict1)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6)}
dict1.popitem()
dict1.popitem()
print(dict1)  # {'a': 1, 'bb': 22}
dict1.popitem()
print(dict1)  # {'a': 1}
dict1.popitem()
print(dict1)  # {}
# dict1.popitem()  # 报错:KeyError: 'popitem(): dictionary is empty'

18.setdefault(key[, default]):如果存在键 key,返回它的值。如果不存在,插入值为 default 的键 key ,并返回 default;default若不给出,默认为 None

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.setdefault("a"))  # 1

再看一个场景:

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.setdefault("a"))  # 1
print(dict1.setdefault("a",99))  # 1
print(dict1.setdefault("abc"))  # None
print(dict1.setdefault("abc",999))  # None
print(dict1.setdefault("k", 12321))  # 12321
print(dict1)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]], 'abc': None, 'k': 12321}

(1)由上可见,如果key存在,该方法不会更改原来的值,如果不存在,该方法无论调用几次,只取第一次的default的值

(2)该方法与dict[key]=value的区别:如果key不存在,setdefault(key,value)方法等同dict[key] = value;但是当key在字典中存在,setdefault(key,value)不会改变原值,而dict[key] = value是会改变原值。所以setdefault方法主要用于向字典中添加一个key-value对,而不是修改key对应的值。

19.dict.update(other):把字典参数 other的 key/value(键/值) 对/包含键值对更新到字典 dict 里;该方法无返回值

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
dict2={"name":"Mike","age":18}
print(dict1.update(dict2))  # None
print(dict1)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]], 'name': 'Mike', 'age': 18}

如果给出关键字参数,也能更新:

dict1={"a":1,"b":2}
dict1.update((("c",3),("d", 4)))
print(dict1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict1.update([("e",5),("f", 6)])
print(dict1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
dict1.update(dict(g=7,h=8))
print(dict1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8}
dict1.update()
print(dict1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8}
dict1.update(g1=71,h1=81)
print(dict1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'g1': 71, 'h1': 81}
# dict1.update(dict(i=9,i=99))  # 报错:dict1.update(dict(g=7,h=8))

如果更新的键有重复,则取最新的键值

dict3={"age":22}
dict4={"sex":"female","color":"red","a":23}
dict1.update(dict3)
print(dict1)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]], 'name': 'Mike', 'age': 22}
dict1.update(dict4)
print(dict1)  # {'a': 23, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]], 'name': 'Mike', 'age': 22, 'sex': 'female', 'color': 'red'}

20.dict.values():返回字典的值组成的新视图

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.values())  # dict_values([1, 22, [1, 2, 3], (4, 5, 6), [101, [102, 103]]])
print(list(dict1.values()))  # [1, 22, [1, 2, 3], (4, 5, 6), [101, [102, 103]]]
print(tuple(dict1.values()))  # (1, 22, [1, 2, 3], (4, 5, 6), [101, [102, 103]])

21.两个字典的异同

(1)字典的keys()和items()支持集合的运算

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.keys())  # dict_keys(['a', 'bb', 'ccc', 'dd', 'fu'])
dict2 = {"a": 1,"bb":2,"c":[1,2,3],"d":(4,5,6,7),"fu":[101,[102,103]]}
print(dict2.keys())  # dict_keys(['a', 'bb', 'c', 'd', 'fu'])
a=dict1.keys() & dict2.keys()
print(a)  # {'fu', 'a', 'bb'}
print(type(a))  # <class 'set'>
b=dict1.keys() - dict2.keys()
print(b)  # {'ccc', 'dd'}
print(type(b))  # <class 'set'>
c=dict1.keys() | dict2.keys()
print(c)  # {'ccc', 'a', 'bb', 'fu', 'c', 'd', 'dd'}
print(type(c))  # <class 'set'>
dict1={'a': 1, 'b': 2, 'c': 3}
dict2={'b': 2,'c': 'hello', 'e': 6}

a=dict1.items() & dict2.items()
print(a)  # {('b', 2)}
print(type(a))  # <class 'set'>
b=dict1.items() - dict2.items()
print(b)  # {('a', 1), ('c', 3)}
print(type(b))  # <class 'set'>
c=dict1.items() | dict2.items()
print(c)  # {('c', 'hello'), ('c', 3), ('e', 6), ('b', 2), ('a', 1)}
print(type(c))  # <class 'set'>

(2)用items()比较异同时,其value值必须为unhashable,否则报错

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
print(dict1.items())  # dict_items([('a', 1), ('bb', 22), ('ccc', [1, 2, 3]), ('dd', (4, 5, 6)), ('fu', [101, [102, 103]])])
dict2 = {"a": 1,"bb":2,"c":[1,2,3],"d":(4,5,6,7),"fu":[101,[102,103]]}
print(dict2.items())  # dict_items([('a', 1), ('bb', 2), ('c', [1, 2, 3]), ('d', (4, 5, 6, 7)), ('fu', [101, [102, 103]])])
# print(dict1.items() & dict2.items())  # 报错:TypeError: unhashable type: 'list'
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值