我正在寻找最理想的数据结构(性能和易用性),从中可以通过字符串键或索引检索值.字典不起作用,因为您无法通过索引真正检索.有任何想法吗?
我已经看过(并写过)了很多这方面的实现.有没有被认为是最好的或正在成为标准?
我所说的有序dict是指对象有一些键的顺序概念,类似于PHP中的数组.
来自PEP 372的冒险似乎是一个强有力的候选人,但它并不完全清楚它是胜利者.
为什么没有OrderedDictionary的通用实现?
在发布此消息之前,我确实看到: 没有OrderedDictionary的通用实现?
但这只是证实它不存在.不是为什么它不存在.
我见过一些自定义实现,包括:http: //www.codeproject.com/KB/recipes/GenericOrderedDictionary.aspx
但是为什么微软不把它包含在基础.net库中呢?当然他们有理由不建造通用......但它是什么?
谢谢
编辑:Perhpase应该转移到programmers.se.com ...但我不知道如何移动它.
问题是:有一个名称列表和一个列表列表,如何创建一个列表,其中每个项目是一个名称为键的有序字典,以及列表列表中的项目作为值?从下面的代码可能会更清楚:
from collections import OrderedDict
list_of_lists = [
['20010103', '0.9507', '0.9569', '0.9262', '0.9271'],
['20010104', '0.9271', '0.9515', '0.9269', '0.9507'],
['20010105', '0.9507', '0.9591', '0.9464', '0.9575'],
]
names = ['date', 'open', 'high', 'low', 'close']
Run Code Online (Sandbox Code Playgroud)
我想得到:
ordered_dictionary = [
OrderedDict([('date', '20010103'), ('open', '0.9507'), ('high', '0.9569'), ('low', '0.9262'), ('close', '0.9271')]),
OrderedDict([('date', '20010104'), ('open', '0.9271'), ('high', '0.9515'), ('low', '0.9269'), ('close', '0.9507')]),
OrderedDict([('date', '20010105'), ('open', '0.9507'), ('high', '0.9591'), ('low', '0.9464'), ('close', '0.9575')]),
]
Run Code Online (Sandbox Code Playgroud) 我想在一个给定的密钥后面插入一个密钥OrdedDict.
例:
my_orderded_dict=OrderedDict([('one', 1), ('three', 3)])
Run Code Online (Sandbox Code Playgroud)
我想'two' --> 2进入正确的地方.
在我的情况下,我需要更新OrdedDict就地.
背景
Django的SortedDict(有一个insert())被删除:https://code.djangoproject.com/wiki/SortedDict
嗨,我有以下代码片段,它给出了KeyError.我已经检查了其他链接,指明make __init__ call to Ordered Dict我做了什么.但仍然没有运气.
from collections import OrderedDict
class BaseExcelNode(OrderedDict):
def __init__(self):
super(BaseExcelNode, self).__init__()
self.start_row = -1
self.end_row = -1
self.col_no = -1
def __getattr__(self, name):
return self[name]
def __setattr__(self, name, value):
self[name] = value
BaseExcelNode()
Run Code Online (Sandbox Code Playgroud)
Error:
Traceback (most recent call last):
File "CIMParser.py", line 29, in <module>
BaseExcelNode()
File "CIMParser.py", line 9, in __init__
super(BaseExcelNode, self).__init__()
File "C:\Python27\lib\collections.py", line 64, in __init__
self.__root
File "CIMParser.py", line 15, in __getattr__
return self[name]
KeyError: '_OrderedDict__root'
Run Code Online (Sandbox Code Playgroud) 使用后读取CSV文件
with open(filename, 'r') as f:
reader = csv.DictReader(f)
for line in reader:
date = line['Date']
Run Code Online (Sandbox Code Playgroud)
每一行都是OrderedDict
OrderedDict([
('Date', '2008-03-20'),
('Name', 'Some name'),...)
])
Run Code Online (Sandbox Code Playgroud)
我想使用列表中第一个字典的键作为列标题,将这个有序字典列表写入python中的csv文件.
环境是:Ansible 1.9.2,CentOS 6.5
我创建了一个角色,可以从Artifactory下载3种不同JAVA版本的JAVA(.tar.gz)工件文件.我正在尝试使用Ansible的with_dict功能(而不是使用with_items).
创建了以下文件:
$ cat roles/java/defaults/main.yml
---
java_versions:
java7_60:
version: 1.7.60
group_path: com/oracle/jdk
classifier: linux-x64
ext: tar.gz
dist_file: "jdk-{{ version }}-{{ classifier }}-{{ ext }}"
# dist_file: "jdk-{{item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }}"
dist_url: "{{ artifactory_url }}/{{ group_path }}/{{ version }}/{{ dist_file }}"
# dist_url: "{{ artifactory_url }}/{{ item.value.group_path }}/{{ item.value.version }}/{{ dist_file }}"
java7_67:
version: 1.7.67
group_path: com/oracle/jdk
classifier: linux-x64
ext: tar.gz
dist_file: "jdk-{{item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }}"
dist_url: "{{ artifactory_url }}/{{ item.value.group_path }}/{{ item.value.version }}/{{ …Run Code Online (Sandbox Code Playgroud) 我有一个 OrderedDictionary,如下面的代码片段所示,其中的键是 strings、integer 和 character。
好吧,我对 OrderedDictionary 很陌生,我所知道的是有序字典可以存储任何类型的键/值对,我们可以通过索引和键访问值。
OrderedDictionary od = new OrderedDictionary();
od.Add("Key1", "Val1");
od.Add("Key2", "Val2");
od.Add("Key3", "Val3");
od.Add(1, "Val4");
od.Add('k', 'V');
Run Code Online (Sandbox Code Playgroud)
所以,我想知道我是否需要访问上面的Val4,那我应该怎么做?因为当我尝试使用
Console.WriteLine(od[1]);
Run Code Online (Sandbox Code Playgroud)
它给了我“Val2”,因为它显然正在考虑将“1”作为索引。
非常感谢!
对此还是陌生的,对不起,如果我问一些真正愚蠢的事情。Python有序词典和pandas系列有什么区别?
我能想到的唯一区别是,orderedDict在数据中可以有嵌套字典。这就是全部?那是真的吗?
使用一种与另一种之间会有性能差异吗?
我的项目是销售预测,大多数数据将是:{第1周:400个单位,第2周:550个单位} ...也许有序词典将是多余的,因为与第#周相比输入订单无关紧要?
再次抱歉,我的问题是愚蠢的,我只是在学习时尝试变得更彻底。
谢谢!
-斯蒂芬
python ×6
dictionary ×3
.net ×2
c# ×2
.net-3.5 ×1
ansible ×1
collections ×1
csv ×1
key-value ×1
list ×1
pandas ×1
python-2.7 ×1
python-3.x ×1
roles ×1
series ×1