Попытка вернуть список значений из вложенного словаря в другом словареPython

Программы на Python
Anonymous
Попытка вернуть список значений из вложенного словаря в другом словаре

Сообщение Anonymous »

Это мой словарь, первый набор специфичен для сервера, ключ «regd» подходит нескольким или многим пользователям.

Код: Выделить всё

{
"0": {
"server": 681262466650734596,
"channel": 693639674841006101,
"balance": 1000,
"bal2": 30000,
"regd": [
{
"user": 624748908479905812,
"exp": 10,
"rank": 1,
"points": 1,
"msgs": 1,
"tokens": 10000
},
{
"user": 1096531392369807492,
"exp": 10,
"rank": 1,
"points": 1,
"msgs": 1,
"tokens": 10000
}
]
}
}
Обратите внимание на «пользовательские» клавиши: значения двух «пользовательских» клавиш разные, поэтому я пишу функцию, которая будет включать номер «пользователя» при вызове, а затем с помощью заданный номер пользователя, сравните с двумя другими номерами пользователей, если совпадение найдено, верните остальные значения, соответствующие совпадающим номерам пользователей.
Итак, вкратце, вызовите функцию с номером пользователя: 624748908479905812 и номером сервера: 681262466650734596, эта функция должна прочитать весь словарь, перебрать один ключ в поисках соответствующего номера сервера, при обнаружении перебрать вложенные словари в ключе «regd», найти соответствующий номер пользователя с заданным номером пользователя и затем верните данные тогда и только тогда, когда номера серверов и номера пользователей совпадают. Он должен возвращать только словарь с соответствующим ключом, а не оба вместе.
Это функция, которая теперь у меня есть для проверки данных:

Код: Выделить всё

def StatsBlyatX(self, User: bool, Server: bool):
gop = self.ReadLevel()
for key, value_key in gop.items():
if value_key['server'] == Server:
rlist = value_key['regd']
try:
g = [gop[i]['server'] for i in gop if gop[i]['server'] == Server]
ch = [gop[i]['channel'] for i in gop if gop[i]['server'] == Server]
b1 = [gop[i]['balance'] for i in gop if gop[i]['server'] == Server]
b2 = [gop[i]['bal2'] for i in gop if gop[i]['server'] == Server]

for entry in rlist:
if entry['user'] == User:
msgs = entry['msgs']
tokens = entry['tokens']
exp = entry['exp']
user = entry['user']
rank = entry['rank']
points = entry['points']
FS = (g, ch, b1, b2, msgs, tokens, exp, user, rank, points)
print(FS)
print("stats got")
return #FS
except Exception as e:
print(e)
return None
Но он возвращает None, когда я хочу, чтобы он возвращал один из двух словарей "regd"


Подробнее здесь: https://stackoverflow.com/questions/784 ... her-dictio

Вернуться в «Python»