我对 Python 非常陌生,我需要创建一个函数,将字典中列表中的值除以 2:
dic = {"A":[2,4,6,8], "B":[4,6,8,10]}
Run Code Online (Sandbox Code Playgroud)
所需的输出:
dic2 = {"A":[1,2,3,4], "B":[2,3,4,5]}
Run Code Online (Sandbox Code Playgroud)
我找到了这个帖子
这有点帮助,但不幸的是我无法弄清楚示例代码的“任何”部分。
我试过这个:
def divide(dic):
dic2 = {}
for i in range(len(dic)):
for j in range(len(dic[i])):
dic2[i][j] = dic[i][j]/2
return dic2
Run Code Online (Sandbox Code Playgroud)
我写了不同的变体,但我一直在“for j...”行中收到 KeyError: 0 。
看哪,理解的力量:
>>> dic = {"A":[2,4,6,8], "B":[4,6,8,10]}
>>> dic2 = {k:[v/2 for v in vs] for k,vs in dic.items()}
>>> dic2
{'A': [1, 2, 3, 4], 'B': [2, 3, 4, 5]}
Run Code Online (Sandbox Code Playgroud)
外部级别有一个字典理解,以及一个用于划分每个列表中的值的“内部”列表理解。
那是因为dict
s 不像列表,它们不使用索引,它们使用键(如标签),并且您可以使用它dict.keys()
来获取 adict
的键。
或者,只需循环dict
使用 usingfor in
循环键:
dic = {"A": [2, 4, 6, 8], "B": [4, 6, 8, 10]}
for k in dic: # similar to `for key in dict.keys():`
dic[k] = [x/2 for x in dic[k]]
print(dic)
Run Code Online (Sandbox Code Playgroud)
输出:
{'A': [1.0, 2.0, 3.0, 4.0], 'B': [2.0, 3.0, 4.0, 5.0]}
Run Code Online (Sandbox Code Playgroud)
如果您不想要那个小数点,请使用//
代替/
。
归档时间: |
|
查看次数: |
13300 次 |
最近记录: |