标签: ordereddictionary

Python普通字典以有序字典转换

我有python普通字典.在此,不保留插入顺序.我需要按插入顺序保留元素.我知道OrderedDict可以做这个工作.但是,我的问题是我需要从已经存在的普通字典中获取有序字典.这个字典无法更改.以下是我的普通词典:

d = {'tag': {'a': 1, 'c': {'k': 8}, 'b': 7, 'n': 6}}
Run Code Online (Sandbox Code Playgroud)

有没有办法在python中保持已经存在的字典中的元素顺序?任何帮助表示赞赏.使用python 2.7

python dictionary ordereddictionary python-2.7

2
推荐指数
1
解决办法
2333
查看次数

OrderedDict没有保持秩序

这个循环的想法是迭代列表.如果对象的某个属性不是OrderedDict的键,则会添加它.它是对象列表的字典

for object in someList:
  if object.DATE not in myOrderedDict:
     myOrderedDict[object.DATE]=[]
  myOrderedDict[object.DATE].append(object)
Run Code Online (Sandbox Code Playgroud)

虽然它似乎确实使OrderedDict大部分正确,但它在打印时最终会出现故障.而不是拥有类似的东西更像(01/13) (02/13) (03/13)(02/13) (03/13) (01/13).
为什么会发生这种情况?如何解决?

python ordereddictionary python-2.7

2
推荐指数
2
解决办法
2719
查看次数

在嵌套的有序字典 python 中查找给定键的值

我试图从嵌套的 OrderedDict 中找到给定键的值。

关键点:

  • 我不知道这个 dict 会嵌套多深
  • 我正在寻找的密钥的名称是不变的,它将在字典中的某个地方

我想在这个例子中返回名为“powerpoint_color”的键的值......

mydict= OrderedDict([('KYS_Q1AA_YouthSportsTrustSportParents_P',
                      OrderedDict([('KYS_Q1AA',
                                    OrderedDict([('chart_layout', '3'),
                                                 ('client_name', 'Sport Parents (Regrouped)'),
                                                 ('sort_order', 'asending'),
                                                 ('chart_type', 'pie'),
                                                 ('powerpoint_color', 'blue'),
                                                 ('crossbreak', 'Total')]))])),
Run Code Online (Sandbox Code Playgroud)

我最初的想法是做这样的事情:

print mydict[x][i]['powerpoint_color']
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

list indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

python get ordereddictionary find key-value

2
推荐指数
1
解决办法
8252
查看次数

在OrderedDict中如何按特定属性排序?

我试图通过执行以下操作对以下OrderedDict进行排序 - >

>>> from collections import OrderedDict
>>> d = OrderedDict([(4995L, [{'isbn_13': u'9788131805923', 'book_quantity': 49L, 'seller_book_id': 4995L, 'book_id': 4995L, 'title': u'Industrial Automation and Robotics', 'selling_price': 292.0, 'id': 4995L, 'condition': 'New Book'}]), (6657L, [{'isbn_13': u'9788122425925', 'book_quantity': 49L, 'seller_book_id': 6657L, 'book_id': 6657L, 'title': u'A Textbook of Agricultural Statistics', 'selling_price': 243.0, 'id': 6657L, 'condition': 'New Book'}]), (6137L, [{'isbn_13': u'9788122425727\n', 'book_quantity': 50L, 'seller_book_id': 6137L, 'book_id': 6137L, 'title': u'A Guide to Corporate Governance', 'selling_price': 247.0, 'id': 6137L, 'condition': 'New Book'}]), (6260L, [{'isbn_13': u'9788122414394\n', 'book_quantity': …
Run Code Online (Sandbox Code Playgroud)

python django ordereddictionary python-2.7

2
推荐指数
1
解决办法
2153
查看次数

将字符串导入为有序字典

我有一个没有扩展名的文件,这样的行(忽略行之间的间距,但每行是一个单独的行):

OrderedDict([('key1', u'value1'), ('key2', 'value2')])
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
Run Code Online (Sandbox Code Playgroud)

当我将它导入Python

snap_fh = open("C:\Users\.......")
for row in snap_fh:
    print(type(row))
Run Code Online (Sandbox Code Playgroud)

行是"strings",我不能解析它OrderedDictionary

"OrderedDict([('key1', u'value1'), ('key2', 'value2'))])\n"
Run Code Online (Sandbox Code Playgroud)

如何将其导入为 OrderedDict

ast.literal_eval(row) 不工作 !

python string import ordereddictionary

2
推荐指数
1
解决办法
1049
查看次数

Json到Python中的OrderedDict

每当我尝试将json解析为OrderedDict时,它的结果顺序与json不同.我试试这样:

from collections import OrderedDict    
data = OrderedDict(json.loads(resp.read().decode("utf-8")), object_pairs_hook=OrderedDict)
Run Code Online (Sandbox Code Playgroud)

我做错了什么,如果是的话,我该怎么做才能修复它,或者在python中它是不可能的?

我已经看到了类似的东西object_pairs_hook=collections.OrderedDict但是甚至没有正确执行.它无法解决参考.

python ordereddictionary python-3.x

2
推荐指数
1
解决办法
1858
查看次数

如何*懒惰*迭代OrderedDict中键的反向顺序?

我想以OrderedDict相反的顺序迭代.

即颠倒顺序:

for k, v in my_ordered_dict.iteritems():
   # < do stuff >
Run Code Online (Sandbox Code Playgroud)

到目前为止,通过反转列表,我得到了一个非懒惰的版本:

for k, v in list(my_ordered_dict.iteritems())[::-1]:
   # < do stuff >
Run Code Online (Sandbox Code Playgroud)

任何想法如何使它更好?

python dictionary ordereddictionary

2
推荐指数
1
解决办法
3257
查看次数

如何在Python中将有序字典的键更改为其他有序字典的键?

我有两个命令的字典D1D2。我想要分配的键名D2D1(覆盖现有的键名D1)。怎么做?

例:

D1 = {'first_key': 10, 'second_key': 20}
D2 = {'first_new_key': 123, 'second_new_key': 456}
Run Code Online (Sandbox Code Playgroud)

现在我想的键名分配D2D1使D1成为

{'first_new_key': 10, 'second_new_key': 20}
Run Code Online (Sandbox Code Playgroud)

python dictionary ordereddictionary

2
推荐指数
1
解决办法
276
查看次数

如何解压缩字典以便它被传递?

这是以下问题:

main_module.py

from collections import OrderedDict
from my_other_module import foo

a = OrderedDict([
    ('a', 1),
    ('b', 2),
    ('c', 3),
    ('d', 4),
    ])

foo(**a)
Run Code Online (Sandbox Code Playgroud)

my_other_module.py

def foo(**kwargs):
    for k, v in kwargs.items():
        print k, v
Run Code Online (Sandbox Code Playgroud)

当我运行时,main_module.py我希望按照我指定的顺序打印输出:

a 1
b 2
c 3
d 4
Run Code Online (Sandbox Code Playgroud)

但相反,我得到:

a 1
c 3
b 2
d 4
Run Code Online (Sandbox Code Playgroud)

我确实理解这与**操作符的实现方式有关,并且它以某种方式丢失了字典对传入的顺序.我也明白python中的字典不是按列表排序的,因为它们是作为哈希表实现的.是否有任何类型的"黑客"我可以应用,所以我得到了在这种情况下所需的行为?

PS - 在我的情况下,我无法对foo函数内的字典进行排序,因为除了传递值的严格顺序之外,没有可遵循的规则.

python dictionary ordereddictionary

2
推荐指数
1
解决办法
1250
查看次数

用Python来添加键到dict

我想添加一个带有计数的键,并在每次增加时递增它,这是一个经典的操作.这是我的常规代码.

d = OrderedDict()
for i, v in enumerate(s):
   if v not in d:
      d[v] = 1
   else:
      d[v] += 1
Run Code Online (Sandbox Code Playgroud)

如何使用1行代码使用setdefault而不是collections. Counter 如果这是一个列表然后我可以做到,

d.setdefault(v, []).append()

有没有办法用整数加法做类似的事情.

python counter dictionary ordereddictionary python-3.x

2
推荐指数
1
解决办法
63
查看次数