标签: ordereddictionary

从ordereddict生成一个pandas数据帧?

我试图从ordereddict创建一个pandas数据帧,以保持值的顺序.但由于某些原因,在创建数据帧后,字段再次混乱.

这是orderdicts列表:

[OrderedDict([
  ('key_a',
  'value_a'),
  ('key_b',
  'value_b'),
]),
OrderedDict([
  ('key_a',
  'value_c'),
  ('key_b',
  'value_d'),
])
]
Run Code Online (Sandbox Code Playgroud)

现在我应该如何从这些创建一个pandas DataFrame?我正在寻找的是类似的东西(重要的是key_a和key_b等列名称顺序):

  key_a    key_b
0 value_a  value_b
1 value_c  value_d
Run Code Online (Sandbox Code Playgroud)

我试过了:

pd.DataFrame.from_records(orderedDictList)
pd.DataFrame.from_dict(orderedDictList)
Run Code Online (Sandbox Code Playgroud)

随意提出任何其他问题.

python ordereddictionary dataframe pandas

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

递归地按键对嵌套的OrderedDict进行排序

Say orig是一个OrderedDict包含普通字符串:字符串键值对的,但有时值可能是另一个嵌套的OrderedDict.

我想orig按键,按字母顺序(升序)排序,并以递归方式进行排序.

规则:

  • 假设键字符串是不可预测的
  • 假设嵌套可以无限发生,例如1-50级都有字符串,OrderedDicts等作为值.

需要协助sorted算法:

import string
from random import choice


orig = OrderedDict((
    ('a', choice(string.digits)),
    ('b', choice(string.digits)),
    ('c', choice(string.digits)),
    ('special', OrderedDict((
        ('a', choice(string.digits)),
        ('b', choice(string.digits)),
        ('c', choice(string.digits)),
    )))
))

sorted_copy = OrderedDict(sorted(orig.iteritems(), ...))

self.assertEqual(orig, sorted_copy)
Run Code Online (Sandbox Code Playgroud)

python sorting recursion ordereddictionary

13
推荐指数
4
解决办法
5251
查看次数

在python中改变有序字典的顺序

我有一个有序的字典,想要改变个别订单.在下面的代码示例中,我希望项目3(人员)及其值移动到位置2.因此,顺序将是动物,人,食物,饮料.我怎么去他的?

import collections

queue = collections.OrderedDict()

queue["animals"] = ["cat", "dog", "fish"]
queue["food"] = ["cake", "cheese", "bread"]
queue["people"] = ["john", "henry", "mike"]
queue["drinks"] = ["water", "coke", "juice"]

print queue
Run Code Online (Sandbox Code Playgroud)

python collections ordereddictionary

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

你如何获得Python OrderedDict中的前3个元素?

你如何获得Python OrderedDict中的前3个元素?

也可以从该字典中删除数据.

例如:我如何获得Python OrderedDict中的前3个元素并删除其余元素?

python dictionary ordereddictionary

12
推荐指数
1
解决办法
1万
查看次数

为什么OrderedDict键视图比较顺序不敏感?

为什么OrderedDict键视图比较顺序不敏感?

>>> from collections import OrderedDict
>>> xy = OrderedDict([('x', None), ('y', None)])
>>> yx = OrderedDict([('y', None), ('x', None)])
>>> xy == yx
False
>>> xy.keys() == yx.keys()
True
Run Code Online (Sandbox Code Playgroud)

OrderedDict键视图应该表现得像OrderedSet,但它的行为相同dict.keys(就像通常一样set).

python2中的"问题"相同:

>>> xy.viewkeys() == yx.viewkeys()
True
Run Code Online (Sandbox Code Playgroud)

它们是不同的类型,(odict_keys是子类dict_keys)

>>> type(xy.keys())
odict_keys
>>> type({}.keys())
dict_keys
Run Code Online (Sandbox Code Playgroud)

并且已经存在一个可以轻易使用的顺序敏感键比较,但它显然仅用作对odict丰富比较的后检查.

这是设计决定还是错误?如果这是一个设计决定,我在哪里可以找到理由的讨论?

python ordereddictionary python-3.x python-internals

12
推荐指数
1
解决办法
1718
查看次数

为什么**kwargs映射与不同排序的OrderedDict相等?

根据PEP 468:

从版本3.6开始,Python将保留传递给函数的关键字参数的顺序.为了实现这一点,收集的kwargs现在将是有序映射.请注意,这并不一定意味着OrderedDict.

在这种情况下,为什么这个有序映射无法与Python的规范有序映射类型进行相等比较,collections.OrderedDict:

>>> from collections import OrderedDict
>>> data = OrderedDict(zip('xy', 'xy'))
>>> def foo(**kwargs):
...     return kwargs == data
... 
>>> foo(x='x', y='y')  # expected result: True
True
>>> foo(y='y', x='x')  # expected result: False
True
Run Code Online (Sandbox Code Playgroud)

虽然现在保留了迭代顺序,但kwargs似乎表现得像比较的普通字典.从3.5开始,Python有一个C实现的有序字典,因此它可以直接使用(或者,如果性能仍然是一个问题,使用3.6紧凑字典的瘦子类更快的实现).

为什么函数接收的有序映射不会在相等比较中遵循排序?

python function ordereddictionary kwargs python-3.6

12
推荐指数
3
解决办法
992
查看次数

为什么我不能通过继承OrderedDict和defaultdict来创建默认的,有序的dict?

我首次尝试将collections模块中两个字典的功能组合在一起,创建一个继承它们的类:

from collections import OrderedDict, defaultdict

class DefaultOrderedDict(defaultdict, OrderedDict):
    def __init__(self, default_factory=None, *a, **kw):
        super().__init__(default_factory, *a, **kw)
Run Code Online (Sandbox Code Playgroud)

但是,我无法为此词典分配项目:

d = DefaultOrderedDict(lambda: 0)
d['a'] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python3.3/collections/__init__.py", line 64, in __setitem__
    self.__map[key] = link = Link()
AttributeError: 'DefaultOrderedDict' object has no attribute '_OrderedDict__map'
Run Code Online (Sandbox Code Playgroud)

实际上,关于如何创建类似对象的这个问题有通过扩展OrderedDict类并手动重新实现所提供的其他方法来实现它的答案defaultdict.使用多重继承会更清晰.为什么不起作用?

python multiple-inheritance ordereddictionary python-3.x defaultdict

11
推荐指数
1
解决办法
2174
查看次数

python中字典和ordereddict之间的区别

我想要一个排序的字典.但之间的项目的顺序mydictorddict似乎并没有改变.

from collections import OrderedDict

mydict = {'a':1,'b':2,'c':3,'d':4}

orddict = OrderedDict(mydict)

print(mydict,orddict)

# print items in mydict:
print('mydict')
for k,v in mydict.items():
    print(k,v)

print('ordereddict')
# print items in ordered dictionary
for k,v in orddict.items():
    print(k,v)


# print the dictionary keys
# for key in mydict.keys():
#     print(key)


#  print the dictionary values
# for value in mydict.values():
#     print(value)
Run Code Online (Sandbox Code Playgroud)

python dictionary ordereddictionary python-2.7 python-3.x

11
推荐指数
3
解决办法
1万
查看次数

如何从订购字典中获取所有密钥?

def izracunaj_dohvatljiva_stanja(funkcije_prijelaza):
    dohvatljiva = []
    dohvatljiva.extend(pocetno_stanje)
    pomocna = collections.OrderedDict
    for i in xrange(len(dohvatljiva)):
        for temp in pomocna.keys(): <-----------------------------------this line
            if temp.split(',')[0] == dohvatljiva[i]:
                if funkcije_prijelaza.get(temp) not in dohvatljiva:
                    dohvatljiva.extend(funkcije_prijelaza.get(temp))
Run Code Online (Sandbox Code Playgroud)

我试图从有序的dict获取所有键,所以我可以迭代它但运行错误后发生: 点击图片

python key ordereddictionary

11
推荐指数
3
解决办法
1万
查看次数

PyCharm中的弱警告:出乎意料的争论

此检查报告声明的参数和实际参数之间的差异,以及不正确的参数(例如,重复的命名参数)和不正确的参数顺序.还分析了装饰器.

那就是PyCharm告诉我的.这是一个弱警告,所以我的代码运行正常.

import collections
var_dict = {}
var_dict = collections.OrderedDict(sorted(var_dict.items()))
Run Code Online (Sandbox Code Playgroud)

^这是有问题的代码行.我相信警告与OrderedDict电话有关.

我检查了Python 3.5 的OrderedDict文档,但我仍然感到困惑.

为什么我收到这个警告?我正在使用PyCharm Community Edition 5.0.1

collections ordereddictionary pycharm python-3.x

10
推荐指数
1
解决办法
8344
查看次数