我正在尝试根据嵌套字典中特定键的值从字典中过滤键值对。这是我到目前为止所拥有的代码:
current_sheet = {}
four_feet_wide = []
for i in range(sheet.nrows):
if i >= 1:
part,height,width,sq,weight,wide,laps = sheet.row_values(i)
current_sheet[part] = {
'Max Height':height,
'Max Width':width,
'Laps':laps
}
for k,v in current_sheet.items():
if width == 4.00:
four_feet_wide.append(part)
pprint.pprint(current_sheet)
print(four_feet_wide)这是dicts的判词:
{'WLI-1-201': {'Laps': 1.0, 'Max Height': 8.2, 'Max Width': 4.0},
'WLI-1-202': {'Laps': 2.0, 'Max Height': 8.83, 'Max Width': 4.0},
'WLI-1-203': {'Laps': 2.0, 'Max Height': 9.47, 'Max Width': 4.0},
'WLI-1-204': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.43},
'WLI-2-205': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.33},
'WLI-2-206': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
'WLI-2-207': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
'WLI-2-208': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
'WLI-2-209': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.33},
'WLI-3-210': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.44},
'WLI-3-211': {'Laps': 2.0, 'Max Height': 9.47, 'Max Width': 4.0},
'WLI-3-212': {'Laps': 2.0, 'Max Height': 8.83, 'Max Width': 4.0},
'WLI-3-213': {'Laps': 1.0, 'Max Height': 8.19, 'Max Width': 4.0}}下面是它输出的内容:
['WLI-1-201', 'WLI-1-202', 'WLI-1-202', 'WLI-1-203', 'WLI-1-203', 'WLI-1-203', 'WLI-2-206',
'WLI-2-207', 'WLI-2-207', 'WLI-2-207', 'WLI-2-207', 'WLI-2-207', 'WLI-2-208', 'WLI-2-208',
'WLI-2-208', 'WLI-2-208', 'WLI-2-208', 'WLI-2-208', 'WLI-2-208', 'WLI-2-208', 'WLI-3-211',
'WLI-3-211', 'WLI-3-211', 'WLI-3-211', 'WLI-3-211', 'WLI-3-211', 'WLI-3-211', 'WLI-3-211',
'WLI-3-211', 'WLI-3-211', 'WLI-3-211', 'WLI-3-212', 'WLI-3-212', 'WLI-3-212', 'WLI-3-212',
'WLI-3-212', 'WLI-3-212', 'WLI-3-212', 'WLI-3-212', 'WLI-3-212', 'WLI-3-212', 'WLI-3-212',
'WLI-3-212', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213',
'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213', 'WLI-3-213']正确的键导出到列表中,但是如何消除重复并导出满足条件的每个键的值
发布于 2020-01-01 15:20:53
如果允许,请使用熊猫:
>>> d= {'WLI-1-201': {'Laps': 1.0, 'Max Height': 8.2, 'Max Width': 4.0},
... 'WLI-1-202': {'Laps': 2.0, 'Max Height': 8.83, 'Max Width': 4.0},
... 'WLI-1-203': {'Laps': 2.0, 'Max Height': 9.47, 'Max Width': 4.0},
... 'WLI-1-204': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.43},
... 'WLI-2-205': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.33},
... 'WLI-2-206': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
... 'WLI-2-207': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
... 'WLI-2-208': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
... 'WLI-2-209': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.33},
... 'WLI-3-210': {'Laps': 1.0, 'Max Height': 2.0, 'Max Width': 3.44},
... 'WLI-3-211': {'Laps': 2.0, 'Max Height': 9.47, 'Max Width': 4.0},
... 'WLI-3-212': {'Laps': 2.0, 'Max Height': 8.83, 'Max Width': 4.0},
... 'WLI-3-213': {'Laps': 1.0, 'Max Height': 8.19, 'Max Width': 4.0}}
...
>>> import pandas as pd
>>> df = pd.DataFrame(d).T
>>>
>>> print(df)
Laps Max Height Max Width
WLI-1-201 1.0 8.20 4.00
WLI-1-202 2.0 8.83 4.00
WLI-1-203 2.0 9.47 4.00
WLI-1-204 1.0 2.00 3.43
WLI-2-205 1.0 2.00 3.33
WLI-2-206 2.0 10.00 4.00
WLI-2-207 2.0 10.00 4.00
WLI-2-208 2.0 10.00 4.00
WLI-2-209 1.0 2.00 3.33
WLI-3-210 1.0 2.00 3.44
WLI-3-211 2.0 9.47 4.00
WLI-3-212 2.0 8.83 4.00
WLI-3-213 1.0 8.19 4.00
>>>
>>>
>>> v1 = df[df['Max Width'] == 4.00]
>>> print(v1)
Laps Max Height Max Width
WLI-1-201 1.0 8.20 4.0
WLI-1-202 2.0 8.83 4.0
WLI-1-203 2.0 9.47 4.0
WLI-2-206 2.0 10.00 4.0
WLI-2-207 2.0 10.00 4.0
WLI-2-208 2.0 10.00 4.0
WLI-3-211 2.0 9.47 4.0
WLI-3-212 2.0 8.83 4.0
WLI-3-213 1.0 8.19 4.0
>>> 获取密钥列表:
>>> print(v1.index.to_list())
['WLI-1-201', 'WLI-1-202', 'WLI-1-203', 'WLI-2-206', 'WLI-2-207', 'WLI-2-208', 'WLI-3-211', 'WLI-3-212', 'WLI-3-213']要获取键-值对:
>>> print(v1.T.to_dict()) # to_dict() converts dataframe back to dictionary
{'WLI-1-201': {'Laps': 1.0, 'Max Height': 8.2, 'Max Width': 4.0},
'WLI-1-202': {'Laps': 2.0, 'Max Height': 8.83, 'Max Width': 4.0},
'WLI-1-203': {'Laps': 2.0, 'Max Height': 9.47, 'Max Width': 4.0},
'WLI-2-206': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
'WLI-2-207': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
'WLI-2-208': {'Laps': 2.0, 'Max Height': 10.0, 'Max Width': 4.0},
'WLI-3-211': {'Laps': 2.0, 'Max Height': 9.47, 'Max Width': 4.0},
'WLI-3-212': {'Laps': 2.0, 'Max Height': 8.83, 'Max Width': 4.0},
'WLI-3-213': {'Laps': 1.0, 'Max Height': 8.19, 'Max Width': 4.0}}发布于 2020-01-01 15:18:57
# Set to eliminate duplicates
four_feet_wide = set(four_feet_wide)
# Get values for each key in the set
values = [current_sheet[k] for k in four_feet_wide] # or
values = list(current_sheet.values())
print(values)您还可以将four_feet_wide初始化为一个集合,这样它就不会添加重复项:
four_feet_wide = set()
...
four_feet_wide.add(part)发布于 2020-01-01 15:22:57
# suppose your dict of dict is stored in variable d
four_feet_wide=[]
for key,value in d.items():
# put condition here
if value['Max Width'] ==4.0:
# adding filtered value to the list
four_feet_wide.append(key)
# printing values of dictionary along with key which matches criteria
print(key,value)在上面一行中,代码可以写成如下所示
four_feet_wide = [key for key,value in d.items() if value['Max Width']==4.0]
print(four_feet_wide)https://stackoverflow.com/questions/59550617
复制相似问题