将具有键值对的列表中的dict对象插入到新列表中

时间:2015-11-20 00:25:19

标签: python list dictionary

我有一个名为dict的{​​{1}},其中有一个名为data的{​​{1}}映射到包含key个对象的clubs。我想将list dict中的每个对象添加到新的clubs

我可以遍历list并创建一个新的,但list仅包含list对象的arr个名称。如何将整个dict对象添加到新列表中,而不仅仅是键名?基本上我想要key dict中的列表。

这就是我的dict列表的外观:

clubs

这是我的实施:

arr

我不明白为什么我只获得字符串(键名),在Objective-c中它可以工作。(['key1', 'key2', 'key1', 'key2', 'key1', 'key2', 'key1', key2] arr = [] for item in data['clubs']: arr.extend(item) print (len(arr)) print (arr) data['clubs']是{{ 1}}来自list的obj,我添加到名为item的新dict。)

以下是原始(json)数据的外观:

list

我想要这样的事情:

list

2 个答案:

答案 0 :(得分:1)

arr.extend(item)会尝试将item解释为sequence,并将该序列中的所有项目添加到arr。要添加单个元素,请使用append

arr = []
for item in data['clubs']:
    arr.append(item)
print(arr)

但是,你可以写:

print(list(data['clubs']))

答案 1 :(得分:1)

您的JSON已经是一个键/值对,其值为python list。要将其提取到自己的列表中,只需从键中分配:

arr = data['clubs']   # returns the list associated with this key!

如果您需要对list / dict中的项目进行任何其他处理,则可能更有用的替代方法:

arr = [{}]* len(data['clubs'])
for k, v in enumerate(data['clubs']):
    arr[k] = v

print(arr)

应该导致:

[
{'type': 'bar', 
  'location': 'Dallas', 
  'id': '013325K52'}, 
 {'type': 'restaurant', 
  'location': 'Dallas', 
  'id': '763825X56'}
]