python中的代码优化

sel*_*elf 0 python dictionary list

我正在使用python中的字典.

s = {'k1':['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg']}
Run Code Online (Sandbox Code Playgroud)

我创建的代码如下:

d = {}
for values in enumerate(s.values()[0]):
    if values[0]<2:
        d[values[1]] = 'True'
    else:
        d[values[1]] = 'False'
Run Code Online (Sandbox Code Playgroud)

我可以使用list comprehension或lambda将其转换为一个班轮代码吗?

我需要回答:

{'aa': 'True', 'bb': 'True', 'cc': 'False', 'dd': 'False', 'ee': 'False', 'ff': 'False', 'gg': 'False'}
Run Code Online (Sandbox Code Playgroud)

更新 - sry代码输入错误

Pre*_*eti 7

回应:

d = {}
for values in enumerate(s.values()[0]):
    if values[0]<2:
        d['ans'] = 'True'
    else:
        d['ans'] = 'False'
Run Code Online (Sandbox Code Playgroud)

一个班轮是:

d = {'ans': str(len(s.values()[0]) < 2)}
Run Code Online (Sandbox Code Playgroud)

你在做什么是荒谬的.从本质上讲,你发布的代码将始终设置d['ans']'True's.values()[0]具有小于的长度2(否则'False').这是因为产生的2元组中的第一个元素enumerate是索引(您要与之比较<2).对于列表长度大于2的所有情况,该else子句将继续将其设置为'False'.你甚至不需要一个循环.

更新: 对于您的新版本:

d = dict( [(val, str(index < 2)) for (index, val) in enumerate(s.values()[0])] )
Run Code Online (Sandbox Code Playgroud)

要么

d = dict( [(i , "True") for i in li[:2]] + [(i, "False") for i in li[2:]] )
Run Code Online (Sandbox Code Playgroud)

更新2:或者如果要更新现有字典:

d.update( (( (val, str(index < 2)) for (index, val) in enumerate(s.values()[0]) )) )
Run Code Online (Sandbox Code Playgroud)