我需要使用JavaScript存储一些统计信息,就像我在C#中这样做:
Dictionary<string, int> statistics;
statistics["Foo"] = 10;
statistics["Goo"] = statistics["Goo"] + 1;
statistics.Add("Zoo", 1);
Run Code Online (Sandbox Code Playgroud)
JavaScript中是否有Hashtable
类似的东西Dictionary<TKey, TValue>
?
我怎么能以这种方式存储价值?
我想在python中将项添加到现有字典中.例如,这是我的字典:
default_data = {
'item1': 1,
'item2': 2,
}
Run Code Online (Sandbox Code Playgroud)
我想添加新项目,以便:
default_data = default_data + {'item3':3}
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?
什么是相似的Python字典,但在Bash中(应该适用于OS X和Linux).
我正在寻找一种优雅的方法,使用一些嵌套的dicts和列表(即javascript样式的对象语法)在dict上使用属性访问来获取数据.
例如:
>>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
Run Code Online (Sandbox Code Playgroud)
应该可以通过这种方式访问:
>>> x = dict2obj(d)
>>> x.a
1
>>> x.b.c
2
>>> x.d[1].foo
bar
Run Code Online (Sandbox Code Playgroud)
我认为,如果没有递归,这是不可能的,但是什么是获得dicts的对象样式的好方法?
如果a mydict
不为空,我访问任意元素:
mydict[mydict.keys()[0]]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
Dictionary<T1,T2>
在C#中合并2个或更多字典()的最佳方法是什么?(像LINQ这样的3.0功能很好).
我正在考虑一种方法签名:
public static Dictionary<TKey,TValue>
Merge<TKey,TValue>(Dictionary<TKey,TValue>[] dictionaries);
Run Code Online (Sandbox Code Playgroud)
要么
public static Dictionary<TKey,TValue>
Merge<TKey,TValue>(IEnumerable<Dictionary<TKey,TValue>> dictionaries);
Run Code Online (Sandbox Code Playgroud)
编辑:从JaredPar和Jon Skeet得到一个很酷的解决方案,但我正在考虑处理重复键的东西.在发生碰撞的情况下,只要它是一致的,将哪个值保存到dict并不重要.
例如,我有两个词:
Dict A: {'a': 1, 'b': 2, 'c': 3}
Dict B: {'b': 3, 'c': 4, 'd': 5}
Run Code Online (Sandbox Code Playgroud)
我需要一种pythonic方式"组合"两个dicts,结果是:
{'a': 1, 'b': 5, 'c': 7, 'd': 5}
Run Code Online (Sandbox Code Playgroud)
也就是说:如果两个词中都出现一个键,则添加它们的值,如果它只出现在一个词典中,则保持其值.
我已经阅读了python文档中的示例,但仍然无法弄清楚这个方法的含义.有人可以帮忙吗?以下是python文档中的两个示例
>>> from collections import defaultdict
>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> for k in s:
... d[k] += 1
...
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]
Run Code Online (Sandbox Code Playgroud)
和
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
... d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
Run Code Online (Sandbox Code Playgroud)
参数int
和list
用于什么?
我正在使用以下代码在C#文件中创建字典:
private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
= new Dictionary<string, XlFileFormat>
{
{"csv", XlFileFormat.xlCSV},
{"html", XlFileFormat.xlHtml}
};
Run Code Online (Sandbox Code Playgroud)
new
错误下面有一条红线:
无法使用功能'集合initilializer',因为它不是ISO-2 C#语言规范的一部分
谁能解释一下这里发生了什么?
编辑:好的,所以事实证明我使用的是.NET版本2.
我正在寻找一个具有键值关联的java类,但不使用哈希.这是我目前正在做的事情:
Hashtable
.Hashtable.entrySet()
.Map.Entry
迭代器.Module
根据值创建类型(自定义类)的对象.这个问题是我无法控制返回值的顺序,所以我不能以给定的顺序显示值(不对代码进行硬编码).
我会使用一个ArrayList
或Vector
为此,但稍后在代码中我需要抓取Module
给定Key 的对象,我无法使用ArrayList
或Vector
.
有没有人知道一个可以执行此操作的免费/开源Java类,或者Hashtable
根据添加时间来获取值的方法?
谢谢!
dictionary ×10
python ×5
c# ×2
hashtable ×2
bash ×1
defaultdict ×1
items ×1
java ×1
javascript ×1
key-value ×1
merge ×1
object ×1