让用户能够输入列表(或单数)数字以从字典中删除字符串键条目的最佳方法是什么?
到目前为止,这就是我所在的地方。我的词典删除了(字典生成因此会有所不同)。
d = {'Seven': 22, 'Six': 0, 'Three': 35, 'Two': 0, 'Four': 45, 'Five': 34, 'Eight': 0}
1)那么我如何得到输入是我的第一个查询。这是我的尝试,但失败了。
>>> s = raw_input('1 2 3 4')
1 2 3 4
>>> numbers = map(str, s.split())
>>> numbers
[]
>>> s = raw_input('1 2 3 4')
1 2 3 4
>>> numbers = map(int, s.split())
>>> numbers
[]
2)我如何将整数转换为单词形式?这里的范围是有限的,每个字典永远不会超过20个条目。 所以我最初的想法是创建一种解释信息的关键。
e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4}
这并不像预期的那样只删除一个条目。
>>> e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4}
>>> {k:v for k,v in e.items() if v!=(1 and 3)}
{'Four': 4, 'Two': 2, 'One': 1}
我的目的是从d而不是e中删除值。它也不实用,因为我不知道用户将输入多少条目,因此使用'和'语句似乎是错误的。
答案 0 :(得分:2)
首先,raw_input
的参数仅供显示。您需要自己输入:
>>> s = raw_input("Enter a sequence of number: ")
Enter a sequence of number: 1 2 3 4
>>> print s
1 2 3 4
现在,您可以使用列表来映射它:
m = ['1':'One', '2':'Two', '3':'Three', .., '10':'Ten']
修改以下是转换方式:
e = [v for k, v in m.items() if k in s]
第三,字典理解(或一般的“理解”)并不是要修改现有对象,而是要创建一个新对象。最接近的是让它像过滤器一样,并将结果重新分配回d
d = {k:v for k, v in d.items() if k not in e}