Python 在将字典保存到CSV之前忽略某些键、值对
我是Python新手(2周),遇到了一个问题。Python 在将字典保存到CSV之前忽略某些键、值对,python,list,python-2.7,csv,dictionary,Python,List,Python 2.7,Csv,Dictionary,我是Python新手(2周),遇到了一个问题。 我有一本不断增长的字典: dict1={"some_large_key1":"value1","some_large_key2":"value2",........,"some_large_key1000":"value1000"} 问题1:我想创建一个csv文件,其中不包括一些键、值对。 -->一种可能的解决方案是创建一个键列表并忽略整个列表 list1=["some_large_key1","some_large_key2","some_la
我有一本不断增长的字典:
dict1={"some_large_key1":"value1","some_large_key2":"value2",........,"some_large_key1000":"value1000"}
问题1:我想创建一个csv文件,其中不包括一些键、值对。-->一种可能的解决方案是创建一个键列表并忽略整个列表
list1=["some_large_key1","some_large_key2","some_large_key3"]
for key,value in dict1:
if key not in list1: #something like this
#do something
else:
#do something
问题2:我不想给出这么大的键名,相反,我可以给出:
list1=["key1","key2",...]
这是一个正确的方法,还是我应该考虑其他事情 是的,您可以列出要忽略的键
dict1={"some_large_key1":"value1","some_large_key2":"value2","some_large_key3":"value3"}
ignore_list=['key1', 'key2']
new_dict = {}
for key in dict1:
if not any(x in key for x in ignore_list):
key_list=[key]
value_list=[dict1[key]]
#make a new dict from above 2 lists (This will exclude ignore key,value pair)
for i in range(len(key_list)):
new_dict[key_list[i]] = value_list[i]
print new_dict
输出:
{'some_new_key3':'value3'} #Note that key1,key2 is ignored in this output dictionary.
你的“一些大的键1”和“键1”之间的关系不是很清楚;但是,我认为您可以做如下操作:
original_dict = {
"some_large_key1": "value1",
"some_large_key2": "value2",
......,
"some_large_key1000": "value1000"
}
to_ignore = ['key1', 'key2', 'key3', ...]
filtered_dict = {key: value for (key, value) in original_dict.items() if key.rsplit('_', 1)[-1] not in to_ignore}
key.rsplit(“”,1)[-1]
的作用是删除一些大的前缀;您可以使用将长键名转换为短键名的函数替换此部分。我建议使用集合而不是列表,因为
中的运算符在集合中是常量。但是,是的,你肯定需要if语句来过滤掉你不想打印的值。你能详细说明一下你的“some\u large\u key1”和“key1”之间的关系吗?您是否使用一些函数将“some_large_key1”简化为“key1”,或者直接忽略前几个字符?@dazeddluzed:所以我有一个键名:“some_large_key1”。我想通过在忽略列表中传递“key1”来简化它,而不是使用这个更大的名称。因此,在迭代dict时,如果我发现任何包含像“blah_blah_key1”这样的“key1”的键,我将忽略它。对于这个不清楚的问题,很抱歉。这是我在stackoverflow中的第一个问题。我正在努力提高。:)我建议不要使用范围(len(key_list))
;作为PyCon 2013中的Python核心开发人员Raymond Hettinger,每当您发现自己在集合中操作索引时,您很可能是做错了。@Dazed困惑:感谢您的评论。你的答案清晰易懂。我从你的回答中学到了一些东西。