weizhongyang 发表于 2018-9-14 16:37:34

关于for的用法还大家帮忙请指教

>>> params = {'server':'baidu', 'database':'mysql', 'pwd':'admin', 'user':'bazig'}
>>>
>>> params.keys()
dict_keys(['server', 'user', 'database', 'pwd'])
>>>
>>> params.values()
dict_values(['baidu', 'bazig', 'mysql', 'admin'])
>>>
>>> params.items()
dict_items([('server', 'baidu'), ('user', 'bazig'), ('database', 'mysql'), ('pwd', 'admin')])
>>>
>>>
>>>
['server', 'user', 'database', 'pwd']
>>>
>>>
['baidu', 'bazig', 'mysql', 'admin']
>>>
>>>
['server', 'user', 'database', 'pwd']
>>>
>>>
['baidu', 'bazig', 'mysql', 'admin']
>>>

以上是我做的实验结果,有几点疑问:
1、这个应该怎么理解呢,展开来应该是怎样的?
2、为什么和执行的结果是一样的,怎么理解?
3、上面是定义是属于列表还是字典,在哪里可以找到有比较详细的文档资料查看?

python小白一枚,还请各位大佬帮忙解释,在此先谢谢啦!

jackz007 发表于 2018-9-14 19:03:35

本帖最后由 jackz007 于 2018-9-15 16:05 编辑

      params = {'server':'baidu', 'database':'mysql', 'pwd':'admin', 'user':'bazig'}

      这个语句定义了含有 4 个元素的字典,每个元素由 键(key):值(value) 对构成;

      元素1:key = 'server'   ,value = 'baidu'
      元素2:key = 'database' ,value = 'mysql'
      元素3:key = 'pwd'      ,value = 'admin'
      元素4:key = 'user'   ,value = 'bazig'

      params . items() 得到由全部 4 个字典元素构成的列表

      for k , v in params . items()

      由于字典的每个元素都是由 key 和 value 2 项构成,所以,for 循环相应地设置了 2 个循环变量 k 和 v,对应于每个字典元素的 key 和 value。在这里,循环变量的名字并不重要,位置(前后)关系很重要。循环中,位置靠前的 (k) 将被赋予 key,靠后 (v) 的将被赋予 value。循环次数取决于字典所含有的元素数量。字典 params 共有 4 个元素,所以,循环次数是 4 ;

       抽取字典 params 中每个元素的键(key)构成一个列表(list);

       抽取字典 params 中每个元素的值(value)构成一个列表(list);
      
      楼主把你的代码稍微修改试一下,写成程序运行一下,也许就会明白一些了:

#!/usr/bin/env python
#coding:gbk

params = {'server':'baidu', 'database':'mysql', 'pwd':'admin', 'user':'bazig'}

i = 1
for key , value in params . items():
    print "element%d : key = %s , value = %s" % (i , key , value)
    i += 1



太空军校生 发表于 2018-9-15 16:56:05

jackz007 发表于 2018-9-14 19:03
params = {'server':'baidu', 'database':'mysql', 'pwd':'admin', 'user':'bazig'}

      这 ...

现在都在学python 3.6了,对于字符的处理更便捷,省去了%d,%s,%f的类型统一用f。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

params = {'server':'baidu', 'database':'mysql', 'pwd':'admin', 'user':'bazig'}

i = 1
for key , value in params.items():
    print (f"element{i} : key = {key} , value = {value}")
    i += 1

夏天的枫 发表于 2018-9-18 15:18:03

v for v, k in params.items()时v是key,k是value
v for k, v in params.items()时v是value,k是key
你注意k,v的位置就好
不过一般都写for k,v in params.items(),k,v正好对应key,value就不容易记错
页: [1]
查看完整版本: 关于for的用法还大家帮忙请指教