我的目标是将一个随机的水果名称存储为fruit_name。使用此方法,我想删除所有值相同的前三个字母的水果。例如:
fruit_name = 'apple II'
dictionary = {'grape' : 'abc.asrtyui', 'apple' : 'xyz7.qwertyui', 'apple I' : 'xyz.rghhyui', 'grape II' : 'zxs2.qwertyui', 'apple II' : 'xyz.qwvnyyui', 'orange' : 'bnm1.qrthnrui'}
我的思考过程是:第1步:查找带有fruit_name的键(在本例中为“ apple II”)第2步:查看其值的前三个字母第3步:删除所有具有相同三个字母的键及其值。 因此,对于上面的示例,此过程发生后,字典将包含:
dictionary = {'grape' : 'abc.asrtyui', 'grape II' : 'zxs2.qwertyui', 'orange' : 'bnm1.qrthnrui'}
这是我的摘录,不确定我是否朝着正确的方向前进,因为我完全感到困惑。 ALSO ,id喜欢使用标准库执行此操作。预先感谢!
for k1, v1 in dictionary.items():
for k2, v2 in dictionary.items():
if k1 == k2:
continue
if v1[:3] == v2[:3]:
答案 0 :(得分:1)
您只需要在字典上循环一次。使用字典理解,我们可以表示“所有值/值都不以键Build.Gradle
的前三个字母开头的键/值”
"apple II"
答案 1 :(得分:0)
fruit_name = 'apple II'
dictionary = {'grape' : 'abc.asrtyui', 'apple' : 'xyz7.qwertyui', 'apple I' : 'xyz.rghhyui', 'grape II' : 'zxs2.qwertyui', 'apple II' : 'xyz.qwvnyyui', 'orange' : 'bnm1.qrthnrui'}
val = fruit_name[:3]
delete_vals = []
for i in dictionary.keys():
if i[:3] == val:
delete_vals.append(i)
for i in delete_vals:
del dictionary[i]
那么,这是怎么回事?首先,我们使用字符串切片将变量val
定义为fruit_name
的前三个字母。然后,我们浏览字典中的键,找到所有这些都是键匹配val
的前三个字符,并将它们附加到“删除列表”(无法在循环中将其删除,因为那样您将修改您要迭代的内容)。然后在单独的for循环中,浏览删除列表并删除字典中的相应值。
不一定是最短的方法,但最简单。
答案 2 :(得分:-1)
while True:
if fruit_name == dictionary[fruit_name]:
del dictionary[fruit_name]
这怎么了?