如何使用lambda来填充字典值?

时间:2018-05-04 04:57:56

标签: python lambda

所以我在学习python时遇到了一个问题。让我说我有一本字典

a = {'Andy':[2,4,6,8],'Bryce':[1,2,3], 'Charile': [3,6], 'David':[10], 'Elaine' :[5,10]}

我怎样才能将lambda用于多个2到a中的每个数字并返回一个新的dict?

我尝试了new_a= list(map(lambda x: x * 2, a.values()))但是,它会返回一个像[[2, 4, 6, 8, 2, 4, 6, 8], [1, 2, 3, 1, 2, 3], [3, 6, 3, 6], [10, 10], [5, 10, 5, 10]]

这样的列表

我想要的新词是真实的:

new_a =  {'Andy':[4,8,12,16],'Bryce',[2,4,6], 'Charile': [6,12], 'David':[20], 'Elaine' :[10,20]}

4 个答案:

答案 0 :(得分:3)

保持简单。

更改现有字典:

for key, value in a.items():
  a[key] = [2 * item for item in value]

使用更新的值创建新的dict:

b = dict()
for key, value in a.items():
  b[key] = [2 * item for item in value]

使用字典理解

b = {key: [2 * item for item in value] for key, value in a.items()}

不知道你在这里需要什么Lambda。如果没有这样做会更容易。

答案 1 :(得分:0)

你可以尝试:

a = {'Andy':[2,4,6,8],'Bryce':[1,2,3], 'Charile': [3,6], 'David':[10], 'Elaine' :[5,10]}

new_a = dict(list((key, list(map(lambda i:i*2, value))) for key, value in a.items()))

输出:

{'Andy': [4, 8, 12, 16], 'Bryce': [2, 4, 6], 'Charile': [6, 12], 'David': [20], 'Elaine': [10, 20]}

答案 2 :(得分:0)

def create_dict(l1, l2, l3):
    return {e[0]:max(e[1], e[2]) for e in zip(l1, l2, l3)}

使用字典理解: 这是一个很短的方法)) 您可以选择要用作键或值的项目。

答案 3 :(得分:0)

# using lambda:
clients = ["A", "B", "C"]
spending_rate = [83724, 64728, 3822]
entry_year = [1999, 2010, 2019]
analyzes = dict(
    zip(
        clients,
        map(
            lambda x : x,
            zip(spending_rate, entry_year)
        )
    )
)
print(analyzes)