以以下样式访问嵌套的字典键:selected = {k: tweets[i]._json[k] for k in {'created_at', 'id', 'full_text'}



经过几个小时的研究,我有点迷路了。"没有问题"似乎与我的相匹配。

问题如下:我有一个JSON,里面包含了关于推特的各种信息。其中大部分是嵌套的,这意味着JSON作为键的值。{}中的键是我要检索其键值对的键。有了"一级钥匙"就没有任何问题。它可以很好地检索它们。但我不知道如何使用"更深层次"的键。我知道如何访问较低级别的值,即dictObject〔'FirstLevelKey'〕〔'SecondLevelKey〕。但问题是,这会返回某个键的值,而不是键本身。我需要告诉代码在括号{}内的键的确切位置。

例如:在我的主JSON(tweets[i]._JSON(中有一个名为"user"的"First level"键,该键的值为JSON,包含键"geo_enabled"。我如何告诉我的程序以与我的"第一级"键"created_at"、"id"、"full_text"相同的方式检索此键?我希望我能够用一种可以理解的方式来表达我的问题。提前谢谢。

selected = {k: tweets[i]._json[k] for k in {'created_at', 'id', 'full_text', tweets[i]._json['user']['geo_enabled']}显然不起的作用

{"created_at":"Thu Dec 10 14:12:18+00000 2020",

"id": 1337804994,
"id_str": "1337037427630804994",
"full_text": "hello",
"user": {
"id": 25360913,
"id_str": "25360913",
"translator_type": "none"
},
"geo": False,
"coordinates": False,
"retweeted": False,
"lang": "de"
}

以下是有关访问嵌套字典值的一些信息:https://www.geeksforgeeks.org/python-nested-dictionary/

你可以用这种方式做得很简单:

tweet_dict = {
"created_at": "Thu Dec 10 14:12:18 +0000 2020",
"id": 1337804994,
"id_str": "1337037427630804994",
"full_text": "hello",
"user": {
"id": 25360913,
"id_str": "25360913",
"translator_type": "none"
},
"geo": False,
"coordinates": False,
"retweeted": False,
"lang": "de"
}
new_dict = {
**tweet_dict, # unpack the tweet dict
'user_id': tweet_dict['user']['id'], # add the user_id key
}
# pretty print the output
from pprint import pprint
pprint(new_dict)

或者不创建新的dict:

tweet_dict['user_id'] = tweet_dict['user']['id'], # add the user_id key

输出:

{'coordinates': False,
'created_at': 'Thu Dec 10 14:12:18 +0000 2020',
'full_text': 'hello',
'geo': False,
'id': 1337804994,
'id_str': '1337037427630804994',
'lang': 'de',
'retweeted': False,
'user': {'id': 25360913, 'id_str': '25360913', 'translator_type': 'none'},
'user_id': 25360913}

最新更新