所以我在学习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]}
答案 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)