我是Python的新手,并试图弄清楚如何过滤掉字典中的所有非字符串键。感谢您提供的任何帮助。
答案 0 :(得分:4)
{ key: dict[key] for key in dict.keys() if isinstance(key, int) }
答案 1 :(得分:1)
is_str = 'foo'
not_str = 34
dd = {is_str:12, not_str:13, 'baz':14, 1:15}
for k in dd: print k, isinstance(k, str)
请注意,这不仅仅是文字字符串键,而是可能引用或不引用字符串的变量。无论您想要什么样的过滤器(保留,删除,操作)都可以进入for循环。
另外,你知道鸭子打字吗?您可能不需要实际删除字符串键项;有时Python会使用非字符串做一些明智的字符串。
答案 2 :(得分:0)
您可以使用dict.keys()获取密钥列表,使用type()检查密钥的类型,然后使用if语句根据类型(“”)检查类型,以及可能删除密钥及其对。以下代码包含剧透。
for key in dict.keys(): #Loop through
if type(key) != type(""): #Check the type
del dict[key] #Potentially delete key and value
答案 3 :(得分:0)
为了各种答案,这是另一种方法:
>>> d = {1: 'ONE', 2: 'TWO', 3: 'THREE', 'T': 'THREE'}
>>> b = {k:d[k] for k in filter(lambda s: type(s) is int, d.iterkeys())}
>>> b
{1: 'ONE', 2: 'TWO', 3: 'THREE'}
答案 4 :(得分:0)
new = {k, v for k, v in old.items() if isinstance(k, str)} # repair items if key is string