相关疑难解决方法(0)

如何在单个表达式中合并两个词典?

我有两个Python字典,我想编写一个返回这两个字典的表达式,合并.update()如果它返回结果而不是就地修改dict,那么该方法将是我需要的.

>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = x.update(y)
>>> print(z)
None
>>> x
{'a': 1, 'b': 10, 'c': 11}
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得最终合并的词典z,不是x吗?

(要清楚的是,最后一次胜利的冲突处理dict.update()也是我正在寻找的.)

python merge dictionary

4349
推荐指数
41
解决办法
168万
查看次数

Python将新项添加到字典中

我想在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 dictionary items

529
推荐指数
3
解决办法
147万
查看次数

是否在Python 3.6+中订购了字典?

字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.

在保留元素顺序的同时,新字典实现如何比旧字典实现更好?

以下是文档中的文字:

dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)

2017年12月更新:Python 3.7 保证dict保留插入顺序

python dictionary python-3.x python-internals python-3.6

386
推荐指数
5
解决办法
8万
查看次数

如何将键,值对添加到字典?

如何将键,值对添加到字典?.我提到以下格式?

{'1_somemessage': [[3L,
                    1L,
                    u'AAA',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 22, 30),
                    u'gffggf'],
                   [3L,
                    1L,
                    u'BBB',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 20, 30),
                    u'ffgffgfg'],
                   [3L,
                    1L,
                    u'CCC',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 22, 30),
                    u'hjhjhjhj'],
                   [3L,
                    1L,
                    u'DDD',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 21, 45),
                    u'jhhjjh']],
 '2_somemessage': [[4L,
                    1L,
                    u'AAA',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 22, 30),
                    u'gffggf'],
                   [4L,
                    1L,
                    u'BBB',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 20, 30),
                    u'ffgffgfg'],
                   [4L,
                    1L,
                    u'CCC',
                    1689544L,
                    datetime.datetime(2010, 9, 21, 22, 30),
                    u'hjhjhjhj'],
                   [4L,
                    1L,
                    u'DDD',
                    1689544L,
                    datetime.datetime(2010, 9, 21, …
Run Code Online (Sandbox Code Playgroud)

python

71
推荐指数
4
解决办法
32万
查看次数

`**'在表达式'dict(d1,**d2)中是什么意思?

我对以下python表达式很感兴趣:

d3 = dict(d1, **d2)
Run Code Online (Sandbox Code Playgroud)

任务是将2个词典合并为第三个词典,上面的表达式完成任务就好了.我对**运算符感兴趣,它对表达式究竟做了什么.我认为**是功率运算符,还没有看到它在上面的上下文中使用过.

完整的代码片段是这样的:

>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
>>> print d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)

python syntax dictionary operators set-operations

43
推荐指数
3
解决办法
7960
查看次数

Python数据模型和内置函数之间有什么关系?

当我在Stack Overflow上阅读Python答案时,我继续看到一些人告诉用户直接使用数据模型的特殊方法属性.

然后我看到矛盾的建议(有时来自我自己)说不要这样做,而是直接使用内置函数和运算符.

这是为什么?特殊的"dunder"方法与Python 数据模型内置函数的属性之间有什么关系?

我什么时候应该使用这个特殊的名字?

python python-datamodel

35
推荐指数
2
解决办法
2938
查看次数

使用Python将数据附加到json文件

我正在尝试创建一个将条目添加到json文件的函数.最终,我想要一个看起来像的文件

[{"name" = "name1", "url" = "url1"}, {"name" = "name2", "url" = "url2"}]
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的:

def add(args):
    with open(DATA_FILENAME, mode='r', encoding='utf-8') as feedsjson:
        feeds = json.load(feedsjson)
    with open(DATA_FILENAME, mode='w', encoding='utf-8') as feedsjson:
        entry = {}
        entry['name'] = args.name
        entry['url'] = args.url
        json.dump(entry, feedsjson)
Run Code Online (Sandbox Code Playgroud)

这确实创建了一个条目,如{"name"="some name", "url"="some url"}.但是,如果我add再次使用此函数,使用不同的名称和URL,则第一个被覆盖.我需要做什么才能将第二个(第三个......)条目附加到第一个?

编辑:对这个问题的第一个答案和评论指出了一个显而易见的事实,即我没有feeds在写块中使用.不过,我不知道该怎么做.例如,以下显然不会这样做:

with open(DATA_FILENAME, mode='a+', encoding='utf-8') as feedsjson:
    feeds = json.load(feedsjson)
    entry = {}
    entry['name'] = args.name
    entry['url'] = args.url
    json.dump(entry, feeds)
Run Code Online (Sandbox Code Playgroud)

python json

34
推荐指数
7
解决办法
13万
查看次数

在Python中,将包含关键字对的列表添加到字典的最简单方法是什么?

我在Python中有一个家庭作业问题.
我在Linux上使用Python 3.4.0版.
设计文档声明我要使用内置函数读取CSV文件,这些函数指定为names.dat,格式如下:

name:name2, name:name3, name2:name4, name3:name5\n (etc)
Run Code Online (Sandbox Code Playgroud)

然后我将这些关键字对添加到字典中,这是我坚持的部分.
我到目前为止的代码是这样的:

dictionary = dict()
database = open('names.dat', 'r')
data = database.read()
data = data.rstrip('\n')
data = data.split(',')
for item in range(len(data)):
    dictionary.update(data[item-1])
Run Code Online (Sandbox Code Playgroud)

我的想法是,如果我有一个格式为"name:name2"的列表元素,并且我将该元素作为参数调用字典更新函数,它将正确映射到字典中的关键字对.
但是,情况并非如此,因为我在运行此脚本时遇到此错误:

File "MyName.py", line 7, in <module>
    dictionary.update(data[item-1])
ValueError: dictionary update sequence element #0 has length 1; 2 is required
Run Code Online (Sandbox Code Playgroud)

似乎相似,但我觉得这是一个不同的问题,以保证单独的回应.
我在这里做错了什么,我该如何解决?
有更简单的方法吗?

python csv dictionary python-3.x

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

python 在嵌套字典中追加字典

我有这本字典:

appointment = { soccer = {
                           day : 20,
                           month : april
                          }
               }
Run Code Online (Sandbox Code Playgroud)

我怎样才能在同一结构中插入这个字典?

appointment = { gym = {
                           day : 5,
                           month : may
                          }
               }
Run Code Online (Sandbox Code Playgroud)

预期输出:

appointment = { soccer = {
                           day : 20,
                           month : april
                          },
                 gym = {
                           day : 5,
                           month : may
                          }
               }
Run Code Online (Sandbox Code Playgroud)

我如何通过代码连接这个dictio?

python

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

Java 列表&lt;整数&gt;

我有以下方法:

public static List<Integer> gradingStudents(List<Integer> grades) {
    for(int i = 0; i < grades.size(); i++){
        if(grades.get(i) < 40)
            continue;
        else if(grades.get(i) % 5 < 3)
            grades.get(i) = grades.get(i) + (Math.abs(grades.get(i)%5-5));     
        else
            continue;
    }
    return grades;
}
Run Code Online (Sandbox Code Playgroud)

我在else if部分遇到了意外的类型错误。为什么我不能grades像上面代码中写的那样更改 的元素?

java

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

将变量添加到字典

我有一本空字典

d = {}
Run Code Online (Sandbox Code Playgroud)

我有这些变量:

key = "foo"
value = 1
Run Code Online (Sandbox Code Playgroud)

我想将它们作为keyvalue变量添加到字典中,因为它们可以在 for 循环中更改。正确的语法应该是什么?

python

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