Предполагая, что вы сначала прочитали данные в список словарей:
data = [{ k: row[k] for k in row if k in ['Name', 'Clan Days']}
for row in rd]
Вы можете использовать next()
для поиска первого словаря в data
, соответствующего Clan Days
значение по умолчанию None
, если ни один из записей не соответствует вашему поисковому запросу:
desired_clan_days = '140'
clan_name = next((entry["Name"] for entry in data
if entry["Clan Days"] == desired_clan_days), None)
Теперь next()
вернет вам первое совпадение, если вам нужны все совпадения, просто используйте понимание списка:
clan_names = [entry["Name"] for entry in data
if entry["Clan Days"] == desired_clan_days]
Обратите внимание, что для такого рода поиска требуется, чтобы в худшем случае (запись не найдена), просматривались все записи в data
.Если этот вид поиска является основным вариантом использования этой структуры данных, рассмотрите возможность его перепроектирования, чтобы лучше соответствовать проблеме - например, иметь значение clan_days в качестве ключа со списком имен кланов:
data = {
"140": ["SirFulgeruL2k19"],
"127": ["Darius"]
}
Inв этом состоянии получение совпадения будет постоянной операцией и будет простым, как data[desired_clan_days]
.defaultdict(list)
- это то, что поможет вам осуществить это преобразование.