Python Dict变换

时间:2017-03-31 19:57:50

标签: python dictionary

我在尝试转换我拥有的数据集时遇到了一些奇怪的困难。

我目前有一个来自表格的字典如下:

data['content']['answers']

我希望将['answers']附加到列表的第一个元素中,如下所示:

data['content'][0]['answers']

但是,当我尝试创建它时,我得到一个空的数据集。

data['content'] = [data['content']['answers']]

我不能为我的生活弄清楚我做错了什么。

编辑:这是开场JSON

我有:

{
"content" : {
              "answers" : {
                "3" : {

但我需要它:

    {
"content" : [
              {
                 "answers" : {
                  "3" : {

感谢

4 个答案:

答案 0 :(得分:2)

您可以使用字典理解(这是Python中最优雅,最强大的功能之一)来实现您想要的功能。)

在您的情况下,以下内容应该有效:

d = {k:[v] for k,v in d.items()} 

您在问题中提到了JSON。而不是滚动你自己的解析器(你似乎可能尝试做),考虑使用json模块。

答案 1 :(得分:2)

如果我已正确理解了这个问题,听起来你需要data['contents']等于一个列表,其中每个元素都是先前包含在data['contents']中的字典?

我相信这可行(适用于Python 2.7和3.6):

# assuming that data['content'] is equal to {'answers': {'3':'stuff'}}

data['content'] = [{key:contents} for key,contents in data['content'].items()]

>>> [{'answers': {'3': 'stuff'}}]

列表理解将保留最初位于contents的每个字典的字典内容,并将字典作为列表返回。

Python 2 doc:https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions

Python 3 doc: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

答案 2 :(得分:0)

最好是给我们一个'数据'的具体例子(字典看起来是什么样的),你试图运行什么代码,得到什么结果以及你除了什么。我想我有一个想法,但不能确定。

答案 3 :(得分:0)

您的问题不明确,缺乏明确的例子。

是的,这样的事情对你有用吗?

data_list = list()
for content in data.keys():
    data_list.append(data[content])