Я пытаюсь научиться программировать, имея свой личный проект, но эта проблема ставит меня в тупик. Я надеюсь, что вы можете помочь.
Вот некоторые примеры данных, с которыми я работаю (переменная: market_list):
[{'MarketName': 'ETH-ADA', 'High': 0.00061957, 'Low': 0.00054578, 'Volume': 10390622.69836943},
{'MarketName': 'USDT-ADA', 'High': 0.64899993, 'Low': 0.434, 'Volume': 30152195.40488637},
{'MarketName': 'BTC-VTC', 'High': 0.00037478, 'Low': 0.00031501, 'Volume': 800033.42837477},
{'MarketName': 'BTC-ADA', 'High': 5.645e-05, 'Low': 4.73e-05, 'Volume': 124383204.30281776},
{'MarketName': 'ETH-LTC', 'High': 0.18977579, 'Low': 0.165721, 'Volume': 13687.21249759},
{'MarketName': 'BTC-LTC', 'High': 0.0170725, 'Low': 0.01478, 'Volume': 145304.12269212},
{'MarketName': 'USDT-NEO', 'High': 154.0, 'Low': 92.2, 'Volume': 257431.011762},
{'MarketName': 'ETH-NEO', 'High': 0.14278059, 'Low': 0.11397457, 'Volume': 64208.17297524}]
Я пытаюсь проверить этот список словарей на наличие комбинаций подстроки, которые можно найти в других строках (с исключениями). Так, например, «ETH-ADA» и «BTC-ADA», за исключением USDT-ADA (тот, который я хочу опустить).
Прямо сейчас у меня есть что-то вроде этого:
my_list = []
for x in market_list:
coin = x['MarketName'].split("-")[1]
if "USDT" not in x['MarketName']:
if market_list.count(coin) == 2:
my_list.append(coin)
Но здесь я сталкиваюсь с новыми проблемами, потому что пары USDT все еще находятся в списке (и учитываются), поэтому я должен удалить их. Это похоже на то, что я грубо форсирую каждую возможность, и я ожидаю, что есть гораздо лучший (и элегантный!) способ подойти к этому, и я надеюсь, что кто-то может объяснить мне, как это сделать.
Я часто оказываюсь в такой ситуации, поэтому, пожалуйста, объясните, почему вы ответили, чтобы я мог лучше понять «менталитет программиста». Это самая сложная часть обучения программированию для меня.
Редактировать: как кто-то сказал в комментариях, было бы разумно объяснить мой ожидаемый результат.
Я хочу, чтобы список, упомянутый выше, выводил пары, которые имеют общие ETH и BTC, но не USDT, так что это даст:
[ADA,LTC]
Counter()
и его методы. 18.01.2018