相关疑难解决方法(0)

相当于Python中的LinkedHashMap

LinkedHashMap是具有可预测迭代顺序的类似Hashtable的数据结构(Python中的dict)的Java实现.这意味着在遍历所有键的过程中,它们是通过插入来排序的.这是通过维护插入顺序的附加链表来完成的.

是否有与Python相同的东西?

python

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

Python等效于C++ STL向量/列表容器

Python中是否存在类似于容器的东西,就像向量和列表一样?

任何链接也会有所帮助.

c++ python containers list vector

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

如何重写此函数以实现OrderedDict?

我有以下函数,它将XML文件解析为字典.

不幸的是,由于Python字典没有排序,我无法按照我的意愿循环遍历节点.

如何更改此值以便输出一个有序字典,该字典反映了使用'for'循环时节点的原始顺序.

def simplexml_load_file(file):
    import collections
    from lxml import etree

    tree = etree.parse(file)
    root = tree.getroot()

    def xml_to_item(el):
        item = None
        if el.text:
            item = el.text
        child_dicts = collections.defaultdict(list)
        for child in el.getchildren():
            child_dicts[child.tag].append(xml_to_item(child))
        return dict(child_dicts) or item

    def xml_to_dict(el):
        return {el.tag: xml_to_item(el)}

    return xml_to_dict(root)

x = simplexml_load_file('routines/test.xml')

print x

for y in x['root']:
    print y
Run Code Online (Sandbox Code Playgroud)

输出:

{'root': {
    'a': ['1'],
    'aa': [{'b': [{'c': ['2']}, '2']}],
    'aaaa': [{'bb': ['4']}],
    'aaa': ['3'],
    'aaaaa': ['5']
}}

a
aa
aaaa
aaa
aaaaa …
Run Code Online (Sandbox Code Playgroud)

python xml collections lxml

13
推荐指数
1
解决办法
7186
查看次数

从OrderedDict和defaultdict继承子类

Raymond Hettinger 展示了一种非常酷的方式来组合集合类:

from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
  pass
# if pickle support is desired, see original post
Run Code Online (Sandbox Code Playgroud)

我想为OrderedDict和defaultdict做类似的事情.但是,当然,defaultdict有不同的__init__签名,因此需要额外的工作.解决这个问题最简洁的方法是什么?我使用Python 3.3.

我在这里找到了一个很好的解决方案:https://stackoverflow.com/a/4127426/336527,但我想可能从defaultdict中获得可能会使这更简单?

python collections multiple-inheritance python-3.x

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

为什么字典值不在插入的顺序中?

当我声明一个列表1,2,3,4并且我对它做了一些事情,即使只是打印我也会得到相同的序列1,2,3,4.

但是当我对字典做任何事情的时候,它们总是会改变数字序列,就好像它是以一种我无法理解的扭曲方式排序.

test1 = [4,1,2,3,6,5]
print test1
test2 = {"c":3,"a":1,"b":2,"d":4}
print test2 

[4, 1, 2, 3, 6, 5]
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)

世界上的'a'如何成为第一个元素和'c',即使按字母顺序对字典进行排序,它应该是1,2,3,4或a,b,c,d不是1,3,2, 4.wT?F @!$!@ $#@!

那么我如何打印,从字典中获取值而不改变元素的位置.

python dictionary sequence

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

python中最有序的dict实现是什么?

我已经看过(并写过)了很多这方面的实现.有没有被认为是最好的或正在成为标准?

我所说的有序dict是指对象有一些键的顺序概念,类似于PHP中的数组.

来自PEP 372的冒险似乎是一个强有力的候选人,但它并不完全清楚它是胜利者.

python dictionary ordereddictionary

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

字典键不是串行的

可能重复:
如何从字典中按照插入的顺序检索项目?

我有django视图和模板的问题

在获得与会议相关的详细信息之后

        for meeting in get_meetings:
           if meeting.venue_id ==None:
                 mee_data = {} 
                 mee_data['id'] = meeting.id
                 getdate = meeting.meeting_datetime
                 mee_data['date'] = getdate.strftime("%Y-%m-%d")
                 mee_data['end_time'] = meeting.end_time
                 mee_data['meeting_duration'] = meeting.meeting_duration 
                 mee_data['start_time'] = meeting.start_time 
                 mee_data['meetingID'] = meeting.meetingID
                 mee_data['id'] = meeting.id
                 mee_data['start_time'] = meeting.start_time 

                 mee_data['name'] = meeting.name

                 getall.append(mee_data) 
Run Code Online (Sandbox Code Playgroud)

getall是我在上面声明的列表

现在添加字典数据后.

我期待我的模板中的结果就像

[{"id": "REG_431103567", "date": "", "end_time": "", "meeting_duration": "", "start_time": "2012-10-29", "meetingID": 192dnjd, "name": "TEsts"},...]
Run Code Online (Sandbox Code Playgroud)

基本上是键的顺序但不幸的是结果就像.

[{"meetingID": "REG_431103567", "start_time": "", "meeting_duration": "", "end_time": "", "date": "2012-10-29", "id": 192, "name": "TEsts"},...]
Run Code Online (Sandbox Code Playgroud)

请建议我应该在这里做什么,这样我才能以正确的方式获得密钥及其相应的值.

谢谢

python django dictionary list

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

可以将字典键强制为特定顺序吗?

我知道通常字典中键/值的顺序是任意的.但是,如果您声明字典"longhand"(见下文)然后从不添加或删除任何键,这是否意味着密钥顺序将在您声明时保留?

我做了几个简短的实验,答案似乎是肯定的,但在我依靠这个之前,我想确定一下.

当我说"手写"时,我只是指一个明确的每个键和值的声明:

myDict = {key1: val1, key2: val2, key3: val3, .... }
Run Code Online (Sandbox Code Playgroud)

python dictionary python-2.7

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