Tag: 字典

修改`** kwargs`字典总是安全的吗?

使用Python函数语法def f(**kwargs) ,在函数中创build关键字参数字典kwargs ,字典是可变的,所以问题是,如果我修改了kwargs字典,是否有可能会产生一些影响我的function范围之外? 从我对字典解包和关键字参数包装工作的理解来看,我没有看到任何理由相信这可能是不安全的,在我看来,在Python 3.6中没有这样的危险: def f(**kwargs): kwargs['demo'] = 9 if __name__ == '__main__': demo = 4 f(demo=demo) print(demo) # 4 kwargs = {} f(**kwargs) print(kwargs) # {} kwargs['demo'] = 4 f(**kwargs) print(kwargs) # {'demo': 4} 但是,这是特定于实现还是Python规范的一部分? 我忽略了任何情况或实现(除了修改参数本身是可变的,像kwargs['somelist'].append(3) )这种修改可能是一个问题?

如何获得null而不是KeyNotFoundException通过键访问字典值?

在某些特定情况下,当在字典中没有这样的密钥时,通过密钥访问字典值时,对于我来说,使用KeyNotFoundException可读的方式来获得null而不是KeyNotFoundException是有用的。 我想到的第一件事是扩展方法: public static U GetValueByKeyOrNull<T, U>(this Dictionary<T, U> dict, T key) where U : class //it's acceptable for me to have this constraint { if (dict.ContainsKey(key)) return dict[key]; else //it could be default(U) to use without U class constraint //however, I didn't need this. return null; } 但实际上并不是很短的,当你写下这样的话: string.Format("{0}:{1};{2}:{3}", dict.GetValueByKeyOrNull("key1"), dict.GetValueByKeyOrNull("key2"), dict.GetValueByKeyOrNull("key3"), dict.GetValueByKeyOrNull("key4")); 我会说,接近基本语法会更好: […]

如何将默认值设置为Python中的字典对象的所有键?

我知道你可以使用setdefault(key,value)为给定的键设置默认值,但是有没有办法在创build一个dict之后将所有键的默认值设置为某个值? 换句话说,我想让字典为我还没有设置的每个键返回指定的默认值。

如何在Python中将字典项目作为函数parameter passing?

我的代码 第一档: data = {'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'} my_function(*data) 第二档: my_function(*data): schoolname = school cityname = city standard = standard studentname = name 在上面的代码中,只有“数据”字典的键被传递给my_function() ,但我想要键值对传递。 如何纠正这个? 我希望my_function()像这样被修改 my_function(school='DAV', standard='7', name='abc', city='delhi') 这是我的要求,根据这个答案 编辑:字典密钥类更改为标准

为什么浮点字典键可以用相同的值覆盖整数键?

我正在通过http://www.mypythonquiz.com工作, 问题#45要求输出以下代码: confusion = {} confusion[1] = 1 confusion['1'] = 2 confusion[1.0] = 4 sum = 0 for k in confusion: sum += confusion[k] print sum 输出是6 ,因为键1.0取代了1 。 这对我来说有点危险,这是否是一个有用的语言function?

在Python中,如何循环查看字典并更改值(如果它等于某个值)?

如果值是None,我想把它改成“”(空string)。 我从这样开始,但是我忘了: for k, v in mydict.items(): if v is None: … right?

Python:减less字典的内存使用

我试图加载一些文件到内存中。 这些文件有以下三种格式之一: stringTAB int stringTAB浮动 int TAB float。 事实上,他们是ngram静态文件,以防万一这有助于解决scheme。 例如: i_love TAB 10 love_you TAB 12 目前,我正在做的伪代码是 loadData(file): data = {} for line in file: first, second = line.split('\t') data[first] = int(second) #or float(second) return data 令我惊讶的是,虽然磁盘中的文件总大小约为21 MB,但在装入内存时,这个过程需要120 – 180 MB的内存! (整个python应用程序不会将任何其他数据加载到内存中)。 目前只有不到10个文件,其中大部分文件保持稳定,大约在5万到8万行,除了一个文件目前有数百万行。 所以我想问一个技术/数据结构来减less内存消耗: 任何压缩技术的build议? 如果我仍然使用字典,有什么办法来减less内存? 是否有可能像Java中的Python字典中设置“加载因子”? 如果你有其他一些数据结构,“也愿意交易一些速度来减less内存。 不过,这是一个时间敏感的应用程序,所以一旦用户input他们的查询,我认为花费超过几秒的时间来返回结果是不合理的。 关于这一点,我仍然对谷歌如何快速完成谷歌翻译感到惊讶:他们必须使用大量的技术和大量的服务器function。 非常感谢你。 我期待你的build议。

删除基于值的字典中的项目

我有一个Dictionary<string, string> 。 我需要查看该字典,以查看是否存在基于来自其他地方的input的值,如果存在,则将其删除。 ContainsValue只是说真/假而不是该项目的索引或键。 帮帮我! 谢谢 编辑:刚刚发现这个 – 你怎么看? var key = (from k in dic where string.Compare(k.Value, "two", true) == 0 select k.Key).FirstOrDefault(); 编辑2:我也只是敲了这可能工作 foreach (KeyValuePair<string, string> kvp in myDic) { if (myList.Any(x => x.Id == kvp.Value)) myDic.Remove(kvp.Key); }

显式和隐式的c#

我是C#的新手,学习新单词。 我发现在编程c#时很难理解这两个词的含义。 我看了字典的意思,这里是我得到的: 含蓄 “隐含的东西是以间接的方式expression的。” “如果一个质量或要素隐含在某件事物中,它就涉及到它或者被它所performance出来;” 明确的 “明确而明确地expression或明确expression某种东西,而不是试图隐藏任何东西” “如果你对某件事情很清楚,你可以非常坦率地说清楚。” 我想在C#中理解它。 谢谢你的帮助。 干杯 附加信息: 这里是我正在阅读的书中的一个句子的一部分,它有这个词“隐含” “这意味着AreaPerPerson( )中的Area和AreaPerPerson( ) 隐含地引用了在调用AreaPerPerson( )的对象中find的那些variables的副本” 我完全不明白这句话在这里想说什么。

如何将HashMap转换为Java中的List?

在Java中,如何获取作为List返回的HashMap的值?