我有点难过,希望得到一些帮助。
所以我有一本像这样的字典
{'a':[1, 2, 3], 'b':[4, 5, 6]}
我需要创建一个自动删除每个列表/键中第一项的函数,因此它应该成为
{'a':[2, 3], 'b':[5, 6]}
我知道我应该使用pop函数,但当有超过2个键和3个值的时候会有点混乱
答案 0 :(得分:6)
你可以使用字典理解:
>>> a = {'a':[1, 2, 3], 'b':[4, 5, 6]}
>>> {k: a[k][1:] for k in a}
{'a': [2, 3], 'b': [5, 6]}
答案 1 :(得分:1)
使用map
内置函数结合lambda函数,您可以使用单行实现此目的。这种方法的另一个优点是不涉及复制(如在切片解决方案中):
doc = {'a':[1, 2, 3], 'b':[4, 5, 6]}
map(lambda v: v.pop(0), doc.values())
这会对您的dict的每个值应用list.pop(0)
。
答案 2 :(得分:0)
您可以遍历字典的值并一次弹出一个。如果您需要进一步的功能或控制,可以将其放在一个函数中。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
s = pd.Series(np.random.lognormal(.001, .01, 100))
ax = s.cumprod().plot()
title = ax.set_title('My Log Normal Example', position=(.5, 1.02),
backgroundcolor='black', color='white',
verticalalignment="bottom", horizontalalignment="center")
title._bbox_patch._mutation_aspect = 0.04
title.get_bbox_patch().set_boxstyle("square", pad=11.9)
plt.tight_layout()
plt.savefig(__file__+".png")
plt.show()
答案 3 :(得分:0)
你可以遍历dict&拼接清单。
var1 = {'a':[1, 2, 3], 'b':[4, 5, 6]}
for element in var1:
var1[element] = var1[element][1:]
答案 4 :(得分:0)
这是另一种解决方案,
dict1={'a':[1, 2, 3], 'b':[4, 5, 6]}
for item in dict1.values():
item.remove(item[0])
for循环遍历由' dict1.values()'表示的字典中的值。值是一组列表,' .remove()' list的函数删除了给定元素的第一个匹配项,因此如果你给它列表中找到的第一个元素,它同样会删除它。
希望这很有用!