【问题标题】:Multiple dictionary fields python多个字典字段python
【发布时间】:2016-02-18 23:22:50
【问题描述】:

在python中有没有办法在字典中创建多个具有相同名称的字段,然后将创建一个JSON文件。

例如:

photos_dictionary={ 'ID': '',
                    'URL':'',
                    'TAGS':[''],
                    'LATITUDE':'',
                    'LONGTITUDE':''}

上面将创建一个包含所有必填字段的字典,然后我将使用 json 库创建一个 json 文件。

我的问题是,一张图片将具有所有这些值:所以理想情况下我会喜欢

photos_dictionary={ 'ID': '',
                    'URL':'',
                    'TAGS':[''],
                    'LATITUDE':'',
                    'LONGTITUDE':''}

为每张图像一遍又一遍地重复。我知道我可以附加到字典中的元素,但由于我有接近 9000 个唯一图像 ID,我不想将其附加到单个元素。

提前致谢!

【问题讨论】:

  • 你不能只为每张图片创建一个 photos_dictionary,然后将其添加到一个名为 images 的列表中吗?
  • 我真的不明白实际的问题是什么。
  • 对混乱表示歉意,我自己仍在努力解决这个问题。也许这会清除它:我想要这样的东西:ID:'' URL:'' TAGS:[]'LATITUDE':'''LONGITUDE':''成为一个图像,然后一遍又一遍地重复。但仍在全球列表中?
  • 公平地说,我认为@JosephJames 有点回答了我......
  • 字典中不能有两次相同的键。我和@JosephJames 在一起

标签: python json python-2.7 python-3.x dictionary


【解决方案1】:

字典中不能有重复的键。

我建议您创建一个 list 字典 - 每张照片一个,或者创建一个 字典字典,其中唯一 ID 是每个字典的键内部字典:

类似:

output = []
for id, url, tags, lat, lon in myPhotoData:
   output.append({'ID': id, 'URL': url, ...etc})
# now convert output to JSON... 
# JSON supports lists (arrays) as well as objects (dicts)

或:

output = {}
for id, url, tags, lat, lon in myPhotoData:
   output[id] = {'ID': id, 'URL': url, ...etc}
# now convert output to JSON...
# ID field is optional in the inner dict since we have it as a key anyway

【讨论】:

  • 太棒了!谢谢,我想我会选择 dict of dicts 方法!
【解决方案2】:

事实上,有一些技术方法可以使用类似 dict 的数据结构,其键可能会出现多次,例如https://github.com/aio-libs/multidict/.

但是,这不是您要查找的数据结构:如果有多个 ID,例如多个 URL,您需要某种方法来存储哪个 URL 对应于哪个 ID。因此,上述列表或 dicts 将是要走的路。

如果您开始使用这些 dicts 中的每一个,那么您的代码的一个很好的因素是实现一个 Image 类,其方法描述对一个图像的操作,其实例属性存储一个图像的数据字段。那么您的整体数据结构可能是Image 实例的列表或字典。

【讨论】:

  • 感谢您的回复,我们的想法是将这个字典存储为 JSON 文件。然后使用 pyLucene 或 pySolr(未定)进行索引。
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
相关资源
最近更新 更多