【发布时间】:2010-11-15 22:39:05
【问题描述】:
好吧,我被困住了,从这里需要一些帮助......
如果我有这样的主字典:
data = [ {"key1": "value1", "key2": "value2", "key1": "value3"},
{"key1": "value4", "key2": "value5", "key1": "value6"},
{"key1": "value1", "key2": "value8", "key1": "value9"} ]
现在,我需要通过该字典来格式化一些数据,即:
for datadict in data:
for key, value in datadict.items():
...filter the data...
现在,我将如何在同一个循环中以某种方式(如果可能......如果没有,请提出替代方案)检查某些键的值,如果这些值与我的预设匹配,那么我会将整个列表添加到另一个字典,从而在我根据某些键和值从这个主字典中走出来时有效地创建更小的字典?
所以,假设我想创建一个子词典,其中包含 key1 的值为“value1”的所有列表,对于上面的列表,它会给我这样的信息:
subdata = [ {"key1": "value1", "key2": "value2", "key1": "value3"},
{"key1": "value1", "key2": "value8", "key1": "value9"} ]
【问题讨论】:
-
“这样的主词典”不正确。你有一个字典列表。
-
而且字典键是唯一的,所以你不能用这样的重复键构造字典: {"key1": "value1", "key2": "value2", "key1": "值3"};结果是 {'key2': 'value2', 'key1': 'value3'}。如果您真的想要重复项,则需要一个列表,因此整体结构将是列表列表,或者字典值应该是元组或列表。
标签: python list dictionary filter