#python
Вопрос:
У меня есть словарь с несколькими ключами, но мне нужно распечатать только его часть, хотя я не знаю, как это сделать.
Выходные данные, которые у меня есть для моего словаря, таковы:
[{'vin': '4T1R11AK7NU637019', 'askPrice': 28106.0, 'msrp': 28106.0, 'mileage': 0.0, 'isNew': True, 'firstSeen': '2021-11-28', 'lastSeen': '2021-11-28', 'modelName': 'CAMRY', 'brandName': 'TOYOTA', 'year': 2022.0, 'dealerID': 30873, 'color': 'Celestial Silver Metallic', 'interiorColor': 'Black', 'vinDecode': {(A LOT OF THINGS IN HERE}}}, {'vin': '4T1G31AK7NU45B292', 'askPrice': 0.0, 'msrp': 0.0, 'mileage': 0.0, 'isNew': True, 'firstSeen': '2021-11-28', 'lastSeen': '2021-11-28', 'modelName': 'CAMRY', 'brandName': 'TOYOTA', 'year': 2022.0, 'dealerID': 12750, 'color': 'N/A', 'interiorColor': 'N/A', 'vinDecode': {(A LOT OF THINGS IN HERE}}}]
Таким образом, существует несколько vin
s, и я просто хотел бы печатать от vin
до interiorColor
для каждой записи; полностью игнорируя vinDecode
часть. Есть ли какой-нибудь способ, которым я мог бы это сделать?
Ответ №1:
Зацикливайтесь на элементах в диктанте. Пропустите ключ «Виндекод».
for key, value in mydict.items(): if key != 'vinDecode': print(f'{key}={value}')
Ответ №2:
Вы не можете этого сделать и в любом случае не должны, потому что, если вы не сможете контролировать источник этих данных, в будущем могут появиться новые ключи.
Лучше всего создать список ключей, которые вас интересуют, и распечатать только те:
my_list_of_dicts = [ {'vin': '4T1R11AK7NU637019', 'askPrice': 28106.0, 'msrp': 28106.0, 'mileage': 0.0, 'isNew': True, 'firstSeen': '2021-11-28', 'lastSeen': '2021-11-28', 'modelName': 'CAMRY', 'brandName': 'TOYOTA', 'year': 2022.0, 'dealerID': 30873, 'color': 'Celestial Silver Metallic', 'interiorColor': 'Black', 'vinDecode': []}, {'vin': '4T1G31AK7NU45B292', 'askPrice': 0.0, 'msrp': 0.0, 'mileage': 0.0, 'isNew': True, 'firstSeen': '2021-11-28', 'lastSeen': '2021-11-28', 'modelName': 'CAMRY', 'brandName': 'TOYOTA', 'year': 2022.0, 'dealerID': 12750, 'color': 'N/A', 'interiorColor': 'N/A', 'vinDecode': []}] keys_i_am_interested_in = {'vin', 'askPrice', 'interiorColor'} for d in my_list_of_dicts: print({k: v for k, v in d.items() if k in keys_i_am_interested_in})
это приведет к печати
{'vin': '4T1R11AK7NU637019', 'askPrice': 28106.0, 'interiorColor': 'Black'} {'vin': '4T1G31AK7NU45B292', 'askPrice': 0.0, 'interiorColor': 'N/A'}
Ответ №3:
Вы можете использовать .pop()
словарь для удаления данных:
for item in items: item.pop("vinDecode") print(item)
Комментарии:
1. Это приведет к удалению раздела виндекода из словаря. Это, вероятно, нарушит ваш код, если вы просто пытаетесь получить промежуточную печать, чтобы что-то проверить, прежде чем передавать диктант для дополнительной обработки.
2. @LukeNelson хорошая мысль! Если вам нужно сохранить исходные данные, вы можете использовать
deepcopy
их изcopy
модуля.3. Вместо
deepcopy
того, чтобы использовать, а затем удалить один из ключей, используя понимание словаря, возможно, было бы лучшей идеей.
Ответ №4:
Вы также можете создать измененный список, содержащий словари с vindecode
удаленными. Позже вы сможете распечатать его.
vin_dict = [{'vin': '4T1R11AK7NU637019', 'askPrice': 28106.0, 'msrp': 28106.0, 'mileage': 0.0, 'isNew': True, 'firstSeen': '2021-11-28', 'lastSeen': '2021-11-28', 'modelName': 'CAMRY', 'brandName': 'TOYOTA', 'year': 2022.0, 'dealerID': 30873, 'color': 'Celestial Silver Metallic', 'interiorColor': 'Black', 'vinDecode': ''}, {'vin': '4T1G31AK7NU45B292', 'askPrice': 0.0, 'msrp': 0.0, 'mileage': 0.0, 'isNew': True, 'firstSeen': '2021-11-28', 'lastSeen': '2021-11-28', 'modelName': 'CAMRY', 'brandName': 'TOYOTA', 'year': 2022.0, 'dealerID': 12750, 'color': 'N/A', 'interiorColor': 'N/A', 'vinDecode': ''}] # Remove specific Key from Dictionary List modified_vin_dict = [{key : val for key, val in vin.items() if key != 'vinDecode'} for vin in vin_dict] for d in modified_vin_dict: for k, v in d.items(): print(f'{k}:{v}')