python常见基础知识点FAQ

本文详细介绍了Python中字典的基本操作,包括获取键、值及键值对的方法,探讨了字典的可迭代性及其在循环中的应用。同时,深入解析了sorted()与list.sort()的区别,以及如何对字典进行排序,包括按照键、值或键值对的不同方式进行排序。

python常见基本知识点FAQ

1.如何取得字典中的键和值?

t = {'year':'2018','month':'12','day':'4','hour':'21','minute':'52','second':'20'}
print(t.keys())
print(t.values())
print(t.items())
dict_keys(['year', 'month', 'day', 'hour', 'minute', 'second'])
dict_values(['2018', '12', '4', '21', '52', '20'])
dict_items([('year', '2018'), ('month', '12'), ('day', '4'), ('hour', '21'), ('minute', '52'), ('second', '20')])

2.字典是可迭代的吗?

for i in t:
    print(i)
print("-"*100)
for i in t.keys():
    print(i)
print("-"*100)
for i in t.values():
    print(i)
print("-"*100)
for i in t.items():
    print(i)
year
month
day
hour
minute
second
----------------------------------------------------------------------------------------------------
year
month
day
hour
minute
second
----------------------------------------------------------------------------------------------------
2018
12
4
21
52
20
----------------------------------------------------------------------------------------------------
('year', '2018')
('month', '12')
('day', '4')
('hour', '21')
('minute', '52')
('second', '20')

结论:字典本身是不像列表或者元组那样可迭代的,如果需要在循环中对字典进行迭代,那就只能对字典的“keys”或者“values”或者“items”进行迭代,然后进一步处理。如果不指定迭代的对象是什么,那么python默认认为是对key进行迭代。

3.sorted()方法和list.sort()方法有什么区别?

list = ["hello","hey","hi","allow","consent","approve"]
print(list)
print("-"*100)
list_sorted = sorted(list)
print(list_sorted)
print("-"*100)
print(list)
list_sort = list.sort()
print(list)
print(list_sort())
['hello', 'hey', 'hi', 'allow', 'consent', 'approve']
----------------------------------------------------------------------------------------------------
['allow', 'approve', 'consent', 'hello', 'hey', 'hi']
----------------------------------------------------------------------------------------------------
['hello', 'hey', 'hi', 'allow', 'consent', 'approve']
['allow', 'approve', 'consent', 'hello', 'hey', 'hi']



---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-26-b80c1a015c3a> in <module>()
      8 list_sort = list.sort()
      9 print(list)
---> 10 print(list_sort())


TypeError: 'NoneType' object is not callable

结论:综上,可以清楚看到:1.sorted()函数是python内置函数,可以对可迭代对象进行排序,结果默认为按照ascii码字符升序,并且返回的结果是一个排序后的新的对象,原对象不受影响。2.list.sort()函数也可以对可迭代对象进行排序,结果也默认为按照ascii码字符升序,不同之处在于,这个方法不返回新的对象,或者说,返回的对象是None值,这就是说,sort()方法排序是在对象本身上进行的。

3.可以对字典进行sort()和sorted()排序吗?

t.sort()
print(t)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-27-a47e8336678a> in <module>()
----> 1 t.sort()
      2 print(t)


AttributeError: 'dict' object has no attribute 'sort'
t.values().sort()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-28-cf021cbb199e> in <module>()
----> 1 t.values().sort()


AttributeError: 'dict_values' object has no attribute 'sort'
t.items().sort()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-29-2d1751765371> in <module>()
----> 1 t.items().sort()


AttributeError: 'dict_items' object has no attribute 'sort'
t.keys().sort()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-30-03efe3817c04> in <module>()
----> 1 t.keys().sort()


AttributeError: 'dict_keys' object has no attribute 'sort'

结论1:可见,不但字典本身不可用sort()方法进行排序,而且,使用了keys()方法,values()方法和items()方法之后的对象也不可以使用sort()方法。(按:由于元组是不可变对象,因此,元组也是不存在sort()方法的)

t_sorted = sorted(t)
print(t_sorted)
print(t)
['day', 'hour', 'minute', 'month', 'second', 'year']
{'year': '2018', 'month': '12', 'day': '4', 'hour': '21', 'minute': '52', 'second': '20'}
t_sorted = sorted(t.keys())
print(t_sorted)
['day', 'hour', 'minute', 'month', 'second', 'year']
t_sorted = sorted(t.values())
print(t_sorted)
['12', '20', '2018', '21', '4', '52']
t_sorted = sorted(t.items())
print(t_sorted)
print(t)
[('day', '4'), ('hour', '21'), ('minute', '52'), ('month', '12'), ('second', '20'), ('year', '2018')]
{'year': '2018', 'month': '12', 'day': '4', 'hour': '21', 'minute': '52', 'second': '20'}
t_sorted = sorted(t.items(),key = lambda x:x[1],reverse = True)
print(t_sorted)
print(t)
[('minute', '52'), ('day', '4'), ('hour', '21'), ('year', '2018'), ('second', '20'), ('month', '12')]
{'year': '2018', 'month': '12', 'day': '4', 'hour': '21', 'minute': '52', 'second': '20'}
t_new = dict(t_sorted)
print(t_new)
print(t)
{'minute': '52', 'day': '4', 'hour': '21', 'year': '2018', 'second': '20', 'month': '12'}
{'year': '2018', 'month': '12', 'day': '4', 'hour': '21', 'minute': '52', 'second': '20'}

结论2:1.sorted可以对可迭代对象进行迭代(由于这个函数返回的是新的对象,因此,也可以用来对元组和字符串等不可变对象进行排序,返回的结果是列表类型),由于keys(),values()和items()方法在对字典进行使用后返回的结果都是课迭代的,所以,这些对象都是可以用sorted()方法进行排序的。2.用t.keys()和t.values()方法进行sorted()排序仅仅实现了对其返回结果的排序,并不能实现对字典的排序,因此需要用t.items()方法进行sorted()排序。3.sorted(t.items())默认是对字典的键进行升序排序,如果要实现对字典按照值降序排序,需要指定key参数和reverse参数。其中,key参数接收的是“排序中进行比较的元素”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值