杨氏 发表于 2020-4-8 14:29

python如何向字典里循环添加值

python如何向字典里循环添加值,如图,把这些默认值0用for循环的方式替换成score里面的值

GhostCN_Z 发表于 2020-4-8 14:39

我就想看看大家的回答

GhostCN_Z 发表于 2020-4-8 14:48

info = ('Kim', 'Kevin', 'Tom', 'Alice', 'Roger', 'Lucas', 'Kati')
score =
dic={}
for i in range(len(info)):
    dic]=score
print(dic)

带色的小马甲 发表于 2020-4-8 14:53

本帖最后由 带色的小马甲 于 2020-4-8 14:54 编辑

dict(map(lambda key,value:,info,score))
dict(zip(info,score))

天黑我隐身 发表于 2020-4-8 15:01

前面几个朋友通过for循环来创建字典,我就不多提了

聊一聊怎么通过for循环来对已经存在的字典修改值

先说结论,在楼主描述的问题中字典很遗憾无法通过for循环来实现需求

这是因为字典的key是无序的(Python3.6+字典有序,但这只是实现细节不应该当做特性去依赖)
而对列表for循环结果value必然是有序的,所以无法实现一一对应

那如果我就要非用for循环来修改值怎么办,也可以
Python除了标准dict外还提供了有序字典OrderedDict,它直接继承了dict,使用方法和dict完全一样
from collections import OrderedDict

qifeon 发表于 2020-4-8 15:01

>>>i=0
>>> for key in info_score:
        info_score=score
        i=i+1

       
>>> info_score
{'kim': 90, 'kevin': 80, 'tom': 70, 'alice': 60, 'roger': 88}

GhostCN_Z 发表于 2020-4-8 15:08

带色的小马甲 发表于 2020-4-8 14:53


对,zip可以,我忘了给

xbang 发表于 2020-4-8 15:13

ii=0
for i in info:
    info_socre=socre
    ii=ii+1
print(info_socre )

qifeon 发表于 2020-4-8 16:20

天黑我隐身 发表于 2020-4-8 15:01
前面几个朋友通过for循环来创建字典,我就不多提了

聊一聊怎么通过for循环来对已经存在的字典修改值


https://www.zhihu.com/question/24306558
Python 3.6改写了dict的内部算法,因此3.6的dict是有序的,在此版本之前皆是无序(写答案当前最新版为3.6)可参考阅读PEP 468根据PEP 468,此项改进降低了dict的内存消耗大概20%-25%(对比Python 3.5)注意3.6的dict遵循的顺序是Key的插入顺序。也就是说需要用一定顺序插入才能获得排好的结果,否则依然需要sort。另外,同样是Hash表实现的set在3.6里也依然是无序状态,这个没改最后,低版本希望有序dict可以用collections.OrderedDict。这是早在2.7就实装了的容器。它同样是遵循插入顺序。

作者:知乎用户
链接:https://www.zhihu.com/question/24306558/answer/374075597
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

wysyz 发表于 2020-4-8 16:25

虽然看不懂,还是顶一下
页: [1] 2
查看完整版本: python如何向字典里循环添加值